linux基礎知識(基本認知、操作命令、常用技巧)


文章目錄

 

 

Linux基本認知

容量大小

bit(位)、Byte(字節,8位)、KB(2^10,千字節)、MB(兆字節)、GB(吉字節)、TB……

Gbit(吉比特)

自動補全命令或文件(夾)

TAB

復用之前的命令

上下鍵

Linux文件系統

/bin:是系統的一些指令。bin為binary的簡寫,主要放置一些系統的必備執行檔例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。
/sbin:一般是指超級用戶指令。主要放置一些系統管理的必備程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。
/usr:
/usr/bin:是你在后期安裝的一些軟件的運行腳本。主要放置一些應用軟體工具的必備執行檔例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。
/usr/sbin:放置一些用戶安裝的系統管理的必備程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。
/dev:任何設備均以文件形式存在於該文件夾內(通過mount命令掛載成用戶直接可用的文件系統)
/media:掛載的可移動設備
/etc:配置文件所在目錄
/proc:是一種內核和內核模塊用來向進程(process) 發送信息的機制(所以叫做/proc)。這個偽文件系統讓你可以和內核內部數據結構進行交互,獲取 有關進程的有用信息,在運行中(on the fly) 改變設置(通過改變內核參數)。 與其他文件系統不同,/proc 存在於內存之中而不是硬盤上。
/tmp:臨時文件,關機時自動銷毀
/var:系統產生的不可自動銷毀的緩存文件、日志記錄。(系統和程序運行后產生的數據、不對外提供服務、只能用戶手動清理)(包括mail、數據庫文件、日志文件)

Linux中命令和執行程序長什么樣子

.sh(shell腳本)

命令和執行程序可能是無擴展名的

執行過的歷史命令的記錄文件的位置

~/.bash_history

linux的隱藏文件

通過更改文件名來實現的(在文件名前添加.)

Linux常用操作命令

linux大致分為Debian系與RH(RedHat)系
Debian系:Ubuntu、kali…
RH系:CentOS…

Linux系統信息查看

查看主機名:hostname

查看機器型號:dmidecode | grep “Product Name” (RH系)

查看活動用戶:w

查看用戶登錄日志:last

查看用戶信息:id

查看本機ip:ip a

查看路由表:ip route

查看所有進程:ps -elf

實時查看進程:top

查看歷史記錄:cat .bash_history

查看發行版本

cat /etc/issue
		cat /proc/version
		cat /etc/redhat-release

查看內核版本

uname -a
        uname -r 查看核心版本
        uname -m 查看操作系統的位版本
        lsb_release -a
windows系統信息查看
查看主機名:whoami
查看用戶信息:net user 用戶名
查看路由表:route print
查看所有進程:tasklist
實時查看進程:taskmgr

linux基本命令(命令行、簡略版

  • 屏幕清除
    clear(完全清除,無法向上翻頁查看之前信息)
    ctrl+L(屏幕清除,開啟新行,依舊可以向上翻頁查看之前信息)
  • 查看系統時間
    date
  • 查看當前目錄
    pwd
  • 切換目錄
    cd 目錄
    目錄:
    ​ ~:登錄用戶的家目錄(用戶創建的初始目錄)
    ​ ./:當前目錄
    ​ …:上級目錄
  • 列目錄
    ls [選項] [文件]
    例:ls -lah
    解釋:
    ​ -l:列出詳細信息
    ​ -a:不隱藏任何項目
    ​ -h:人性化顯示,文件大小可以已k單位顯示
  • 新建目錄
    mkdir 目錄
  • 刪除文件
    rm -rf 文件名
  • 改文件名
    mv [選項] 源文件 目標文件
  • 新建文件
    touch 文件
  • 復制文件
    cp [選項] 源文件 目標文件
  • 查看文件
    cat 正常文件查看
    tac 從最后一行開始顯示
    nl 顯示是會輸出行號
    more less less可以往前翻頁
    可翻頁查看(只向后):more,按q停止
    可翻頁查看(可向前或向后):less,按q停止
    head/tail 只看頭幾行/尾幾行
    ​ tail -n 3 .bash_history
    ​ -n:選項
    ​ 3:參數
    od 二進制方式讀取
  1. cat -A可以看到特殊字符
    nl -b a/t 不論是否空行都列出/空行不列出 -ln/rn/rz 行號左邊/右邊不加0/加0 -w 行號所占字符數
  2. od [-t TYPE] 文件
    選項或參數:
    -t :后面可以接各種 [類型(TYPE)」 的輸出,例如:
    a:利用默認的字符來輸出:
    c:使用ASCII 字符來輸出
    d[size] :利用十進制(dec imal)來輸出數據,每個整數占用size bytes ;
    f[size] :利用浮點數(floating)來輸出數據, 每個數占用size bytes :
    o[size] :利用八進制(octal)來輸出數據,每個整數占用size bytes ;
    x[size] :利用十六進制( hexadec imal )來輸出數據,每個整數占用size bytes ;
  3. od -t oCc 文件 C可以比較文件不同編碼輸出

 

  • 搜索文件
    find、which、whereis
    which:查找PSATH環境變量中的可執行命令 whereis:查找某個命令、其源碼和幫助文件所在的位置 find:全盤查找文件,支持正則匹配 find / -name “xxx.txt” 按名稱查找 find . -mtime -1 查找1天內更改的文件 find . -ctime -1 查找1天內創建的文件
  • 更改文件權限
    chmod 權限更改 文件
    舉例見文件與目錄權限
  • 更改所有者
    chown user text.txt
  • 更改所屬組
    chgrp user_grp text.txt
  • 待更新

文件與目錄權限

權限位3位一組,第一位代表讀權限,第二位代表寫權限,第三位代表執行/進入權限。

第一組代表所屬用戶(u),第二組代表所屬用戶組(g),第三組代表其他組(o)的權限

比如

-rw-r–r-- 1 anyone anyone 0 7月 2 16:12 new.txt
drwx------ 6 root root 4.0K 7月 2 16:14 root

權限文件目錄r讀取文件內容查詢目錄內容w編輯文件內容修改目錄內容x執行文件進入目錄

權限更改步驟:

  • 改變所屬用戶chown(應該首先改)
    ​ chown user text.txt
  • 改文件權限chmod
    ​ chmod 770 test.txt
    ​ chmod u+r test.txt
    ​ chmod u=rw test.txt
  • 改文件所屬組
    chgrp user_grp text.txt

上傳下載

yum install lrzsz -y

解壓windows壓縮包

yum install unzip -y

命令管理

設置別名

alias ll = "ls -lah"

文件校驗

hash校驗

md5sum filename
sha1sum filename
sha256sum filename

用戶管理

增刪改查:添加用戶、刪除用戶、修改用戶所屬組、查詢用戶列表

  1. 添加用戶:adduser
  2. 刪除用戶:userdel
  3. 修改用戶所屬組:usermod
  4. 查詢用戶列表:cat /etc/passwd

用戶組管理

增刪改查:添加用戶組、刪除用戶組、修改用戶組信息、查詢用戶組列表

顯示當前用戶所屬組

  1. 添加用戶組:groupadd
  2. 刪除用戶組:groupdel
  3. 修改用戶組信息:groupmod
  4. 查詢用戶組列表:cat /etc/group
  5. 顯示當前用戶所屬組:groups

進程管理

  • 查看進程
    ps -elf
    實時查看進程:top
  • 殺死進程
    kill pid

軟件管理

RH系:yum

Debian系:apt

安裝步驟:

​ RH系:

​ 更新軟件包列表:sudo yum update

​ 安裝軟件:sudo yum install tmux

​ Debian系:

​ sudo apt update

​ sudo apt install tmux

遠程管理及會話保持

  • 待更新

​ 文檔:Tmux 入門教程.note

linux常用技巧

如何關機

在保證資料已經安全保存、程序正常退出的情況下進行關機。

物理機下:按一下電源鍵

虛擬機下:電源->關閉客戶機

具備管理員權限,用戶登錄的情況下:輸入

poweroff
shutdown
init 0

更改文件時間

touch [-acdmt] 文件
選項與參數:
-a:僅修訂access time;
-c:僅修改文件的時間,若該文件不存在則不建立新文件:
-d:后面可以接欲修訂的日期而不用目前的日期,也可以使用–date=“日期或時間”
-m :僅修改mtime
t:后面可以接欲修訂的時間而不用目前的時間,格式為[YYYMMDDhhmm],不會修改ctime

Unix時間
指從1970-1-1 0:0:0 UTM開始到現在經歷的秒數

網絡配置

RH系和Debian系網絡配置

  1. 確認能否上網
    查看ip:ip address
    判斷能否上網:ping X.X.X.X
    啟動網卡 ifup 網卡名
  2. 更改網絡配置
    Debian系,以Kali為例:
    編輯網卡配置文件:sudo vi /etc/network/interfaces
    DHCP自動獲取IP方式內容如下:
    auto eth0
    iface eth0 inet dhcp
    靜態地址配置網絡參數內容如下:
    auto eth0
    iface eth0 inet static
    address 192.168.3.90
    gateway 192.168.3.1
    netmask 255.255.255.0
    RH系, 以CentOS 7 為例:
    vi /etc/sysconfig/network-scripts/ifcfg-網卡名稱
    對應行修改為:ONBOOT=yes
    默認配置內容:
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=6e549a87-a31f-4997-b524-e8d6c14a33c5
    DEVICE=ens33
    ONBOOT=yes
    靜態配置IP:
    HWADDR=“00:15:5D:07:F1:02”
    TYPE=“Ethernet”
    BOOTPROTO=“static” #dhcp改為static
    DEFROUTE=“yes”
    PEERDNS=“yes”
    PEERROUTES=“yes”
    IPV4_FAILURE_FATAL=“no”
    IPV6INIT=“yes”
    IPV6_AUTOCONF=“yes”
    IPV6_DEFROUTE=“yes”
    IPV6_PEERDNS=“yes”
    IPV6_PEERROUTES=“yes”
    IPV6_FAILURE_FATAL=“no”
    NAME=“eth0”
    UUID=“bb3a302d-dc46-461a-881e-d46cafd0eb71”
    ONBOOT=“yes” #開機啟用本配置
    IPADDR=192.168.7.106 #靜態IP
    GATEWAY=192.168.7.1 #默認網關
    NETMASK=255.255.255.0 #子網掩碼
    DNS1=192.168.7.1 #DNS 配置
  3. 重啟網絡服務
    /etc/init.d/networking restart
    ifup 網卡名:激活網卡
    netstat -r:查看路由表(Debian系)
    ip route:查看網關
    systemctl stop network:關閉網關(RH系)
    systemctl start networking(Debian系)
    systemctl start network:開啟網關
    systemctl status network:查看狀態(RH系)

防火牆

centos中如何利用iptables替代系統默認的firewall

yum install iptables-services   //安裝iptables服務,如遇yum被鎖,則執行rm -rf/var/run/yum.pid,是iptables-services,並非iptables
systemctl start iptables //啟動iptables服務,是iptables,並非iptables-services
systemctl enble iptables //設置iptables服務開機啟動
systemctl stop firewalld.service       //關閉firewalld
systemctl disable firewalld.service    //禁止firewalld開機啟動
firewall-cmd --state    //查看firewalld運行狀態
tips
service 服務名 start =等同於= systemctl start 模塊類名
chkconfig 服務名 on systemctl enable 模塊類名

掛載光盤

Ubuntu 用指令掛載CDROM 已經不用像以前那樣,在 mount 的時候,要給一堆的參數才能掛載,現在,只要先用下面的這一行指令來找出 CDROM 的代碼。

# 要用到管道操作符|
ls /dev | grep cdrom

然后,再直接用那個代碼來掛載就可以了,例如用上面的指令找到的 CDROM 代碼是 cdrom1,那就可以用下面的這一行指令;來把它掛載到 /media/cdrom 來使用。

sudo mount /dev/cdrom1 /media/cdrom

移動硬盤斷電

待完善

hdparm

eject

sudo udisksctl unmount -b /dev/sdb1

udisksctl power-off -b /dev/sdb

修改MAC地址

臨時修改

十六進制只能包含0-9,A-F

十六進制的10是指十進制的16

ifconfig eth0 down /*禁掉eth0網卡,這里以eth0網卡為例*/
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE /*修改eth0網卡的MAC地址*/
ifconfig eth0 up   /*重新啟動eth0網卡*/
然后重新啟動主機。按照這種方法修改MAC地址,重新啟動主機系統后,MAC地址會自動還原。

文件編輯(vi編輯器)

  • vi內實現左下上右移動(hjkl),行首行尾移動(^,$),斷尾(G)
  • vi內實現命令模式及編輯模式轉換(i,ESC)
  • 對字符、行進行增刪改查(a, x, x->i, /查詢的字符串->n-N; o, dd)
  • 選擇字符:v->上下左右
  • 字符、行復制粘貼(y, p)
  • 撤銷:u,恢復:ctrl+R
  • 保存::wq(保存並推出),:q!(強制退出)

控制用戶(組)使用sudo

Linux中普通用戶用sudo執行命令時報”xxx is not in the sudoers file.This incident will be reported”錯誤,解決方法就是在/etc/sudoers文件里給該用戶添加權限。如下:
1.切換到root用戶下
  方法為直接在命令行輸入:su,然后輸入密碼(即你的登錄密碼,且密碼默認不可見)。
2./etc/sudoers文件默認是只讀的,對root來說也是,因此需先添加sudoers文件的寫權限,命令是:
即執行操作:chmod u+w /etc/sudoers
3.編輯sudoers文件
即執行:vi /etc/sudoers
找到這行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (這里的xxx是你的用戶名)
ps:這里說下你可以sudoers添加下面四行中任意一條
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允許用戶youuser執行sudo命令(需要輸入密碼).
第二行:允許用戶組youuser里面的用戶執行sudo命令(需要輸入密碼).
第三行:允許用戶youuser執行sudo命令,並且在執行的時候不輸入密碼.
第四行:允許用戶組youuser里面的用戶執行sudo命令,並且在執行的時候不輸入密碼.
4.撤銷sudoers文件寫權限,命令:
chmod u-w /etc/sudoers
當然如果你理解上面的原理后,可以直接輸入如下命令解決此問題
su - echo 'xxx ALL=(ALL) ALL' >> /etc/sudoers (其中xxx代表用戶名,用上了重定向符)

sshd

  1. 嘗試連接
    windows下運行cmd
    ssh user@ip,比如ssh anyone@192.168.6.111
  2. 確認網絡連接狀態
    ping ip
  3. 確認服務器開啟了ssh服務
    systemctl status ssh
  4. 重啟ssh服務
    systemctl restart ssh
    systemctl start ssh
    systemctl [start|stop|status|enable|disable] ssh
    ​ enable/disable:自啟動
    service ssh [start|stop]:舊版
  5. 檢查配置
    配置文件位置:/etc/ssh/sshd_config
    要求:禁止管理員root用戶通過ssh遠程登錄

    #PermitRootLogin prohibit-password
    更改為:
    # 添加誰什么時候改的的注釋 PermitRootLogin no
  6. 重啟ssh服務
    Debian系:
    systemctl restart ssh
    RH系:(CentOS…)
    systemctl restart sshd
  7. 使用客戶端連接
    下載xshell進行連接
tips:
​ 第一次連接ssh驗證指紋
​  查看ssh指紋
ssh-keygen -lf /etc/ssh/ssh_host_dsa_key ssh-keygen -lf /etc/ssh/ssh_host_rsa_key

網站搭建

Linux下網站環境的搭建(小皮面板)

步驟:

yum install -y wget && wget -O install.sh [https://download.xp.cn/install.sh && sh install.sh](https://download.xp.cn/install.sh && sh install.sh)
  • 根據安裝后的提示登錄管理界面,並將網站主目錄上傳
  • 瀏覽器鍵入正確的URL進行訪問

Docker Inrto

Docker是一種虛擬化的解決方案,利用它能夠實現多台計算機的模擬(虛擬Linux主機)。

Docker逃逸(屬於虛擬化逃逸漏洞的范疇)

Windows、Linux平台上都可以搭建docker環境,但是強烈推薦在Linux上面構建docker環境,強烈反對在windows上面做。

CentOS7下docker安裝命令

安裝方式一:通過下載腳本安裝

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh

安裝方式二:通過安裝包安裝

CentOS7下離線安裝包的安裝三個文件:

  • 下載地址:安裝包地址
  • 下載的文件:
    containerd.io-1.2.6-3.3.el7.x86_64.rpm
    docker-ce-cli-19.03.9-3.el7.x86_64.rpm
    docker-ce-19.03.9-3.el7.x86_64.rpm

利用rz命令將上述3個文件傳入虛擬機

利用yum install 命令依次安裝上述三個文件

通過docker version查看docker版本號

啟動docker服務:systemctl start docker

查看狀態

  • 查看docker版本
    docker version
  • 查看docker信息
    docker info
  • 查看已有鏡像(/var/lib/docker目錄下)
    docker images
  • 查看運行的容器
    docker psdocker container ls
    docker container ls -all

鏡像

鏡像操作

  • 查找鏡像
    docker search mysql
  • 拉取鏡像
    docker pull centos:latest
    執行docker pull centos會將Centos這個倉庫下面的所有鏡像下載到本地repository。
  • 刪除鏡像
    docker rmi docker.io/tomcat:7.0.77-jre7
    或者
    docker rmi b39c68b7af30
    docker rmi -f 鏡像名
  • 運行鏡像(參見創建容器)
    docker run image_name
  • 導出鏡像
    docker save -o mysql.tar mysql
  • 導入Docker鏡像
    docker load -i mysql.tar
  • 通過Dockerfile編譯Docker鏡像
    docker build -f Dockerfile -t xunfeng .
    -f Dockerfile選項及參數為默認,可以不用
    -t 指定生成的鏡像名

鏡像加速

  1. 配置加速器
    systemd 的系統(如Ubuntu16.04+、Debian8+、CentOS7+),編輯/etc/docker/daemon.json並寫入:{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
    適用的加速器地址
    網易:
    阿里雲:https://<你的ID>.mirror.aliyuncs.com
    七牛雲加速器:
  2. 重啟docker服務
  3. 驗證生效
    執行docker info,檢查Registry Mirrors對應內容,如:
    Registry Mirrors:

容器

容器操作

創建容器

docker run -dit -p 80:80 -v /sys/fs/cgroup:/sys/fs/cgroup:ro --privileged=true --name=lnmp 2233466866/lnmp

$ docker run -d -p 8000:80 -v /opt/data:/data ysrc/xunfeng:latest

把物理機的 /opt/data 掛載到容器的 /data 目錄下, 訪問:  正常訪問則代表安裝成功

tips:v->volume

啟停容器

docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id

進入容器

!不建議使用sshd進入容器

有兩種方式進入容器,attach方式進入后再退出會導致容器運行停止,而exec方式則不會。

多窗口用attach方式進入容器,多窗口內容同步,且容易存在單窗口阻塞所有窗口的問題。

docker attach container_name/container_id

docker exec -it 64604a87ee7c bash

docker exec -it lnmp /bin/bash

刪除容器

docker rm container_name/container_id

CentOS下2233466866/lnmp鏡像的安裝

操作用戶:ROOT

步驟:

  1. 恢復快照到初始狀態
  2. 安裝docker
    a) curl -fsSL  -o get-docker.sh
    b) get-docker.sh
  3. 查看docker版本
    a) docker version
  4. 配置鏡像加速器
    a) vi /etc/docker/daemon.json
    b) 寫入{“registry-mirrors”:[“”]}
  5. 重啟docker服務
    a) systemctl restart docker
  6. 驗證是否生效,查看docker信息
    a) docker info
  7. 拉取鏡像
    a) docker pull 2233466866/lnmp
  8. 查看已有鏡像
    a) docker images
  9. 創建容器(此處遇到問題,見后)
    a) docker run -dit -p 80:80 -v /home/www:/www --privileged=true --name=lnmp 2233466866/lnmp
  10. 查看運行容器(見圖一)
    a) docker ps
  11. 連接容器,進入/www目錄
    a) docker exec -it lnmp /bin/bash
    b) cd /www
  12. 使用rz命令傳輸文件,使用unzip解壓文件.zip文件
    a) yum install lrzsz
    b) rz
    c) 選擇文件傳輸
    d) yum install unzip
    e) unzip 文件名(.zip)
    f) exit
  13. 查詢CentOS系統IP地址(見圖二)
  14. 在瀏覽器中輸入正確的URL訪問(見圖三)
直接從客戶機向docker容器中傳輸文件:
docker cp /home/文件 容器ID:/www

附件:
圖一:


圖二:


圖三:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳]

安裝問題:

問題:創建容器時顯示IPv4轉發被禁用,網絡無法工作


解決辦法:

    1. 在宿主機上執行
      echo "net.ipv4.ip_forward=1" >> /usr/lib/sysctl.d/00-system.conf
    2. 查看是否更改
      tail -2 /usr/lib/sysctl.d/00-system.conf
    3. 重啟network和docker服務
      systemctl restart network && systemctl restart docker
    4. 重新創建容器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM