首頁 > 軟體

Linux常用基礎命令

2020-06-16 16:58:39

一、系統目錄結構

約定俗成:

  bin (binaries)存放二進位制可執行檔案

  sbin (super user binaries)存放二進位制可執行檔案,只有root才能存取

  etc (etcetera)存放系統組態檔

  usr (unix shared resources)用於存放共用的系統資源

  home 存放使用者檔案的根目錄

  root 超級使用者目錄

  dev (devices)用於存放裝置檔案

  lib (library)存放跟檔案系統中的程式執行所需要的共用庫及核心模組

  mnt (mount)系統管理員安裝臨時檔案系統的安裝點

  boot 存放用於系統引導時使用的各種檔案

  tmp (temporary)用於存放各種臨時檔案

  var (variable)用於存放執行時需要改變資料的檔案

二、基本命令

1.目錄操作

相對路徑和絕對路徑說明:

現在在/home/dijia478/下

./a/b.txt和a/b.txt都表示相對路徑,當前目錄下的a資料夾下的b.txt檔案

/home/dijia478/a/b.txt表示絕對路徑,根目錄下的home資料夾下的dijia478資料夾下的a資料夾下的b.txt檔案

cd ./a 切換到當前目錄的a資料夾
cd ..  切換到上一層目錄
cd /  切換到系統根目錄
cd ~  切換到使用者主目錄
cd -  切換到上一個所在目錄

pwd  顯示當前所在目錄的絕對路徑

2.檢視檔案列表

ls /path/顯示該目錄所有檔案或資料夾名
ls -a  顯示所有檔案或資料夾名(包含隱藏的)
ls -l  按列表顯示所有檔案或資料夾,縮寫成ll

ll -h  友好的顯示檔案大小(顯示成K,MB,GB)

3.建立和刪除資料夾

mkdir app  建立app資料夾
mkdir –p app2/test  級聯建立aap2以及test資料夾

rmdir app  刪除app目資料夾(需要是空資料夾)

4.檔案操作

rm a.txt  刪除a.txt檔案,刪除需要使用者確認,y/n
rm -f a.txt  不詢問,直接刪除a.txt檔案
rm -r a  遞回刪除a資料夾(無論是否有內容)
rm -rf a  不詢問遞回刪除a資料夾(慎用)
rm -rf *  刪除當前目錄下所有內容(最好別用)
rm -rf /*  no 作 no die(Linux系統就玩完了)

cp a.txt b.txt  將a.txt複製為b.txt檔案
cp a.txt ../  將a.txt檔案複製到上一層目錄中

mv a.txt ../  將a.txt檔案移動到上一層目錄中
mv a.txt b.txt  將a.txt檔案重新命名為b.txt

touch a.txt  建立一個空的a.txt檔案
echo "good good study" > a.txt  把">"左邊的輸出內容放到右邊的檔案裡去,如果存在就覆蓋,如果不存在就建立
vi a.txt  用文字編輯器編輯一個檔案,如果不存在就建立

5.檔案打包歸檔和壓縮

tar -cvf file.tar dirpath filepath  將dir資料夾和file檔案在當前目錄下打包成file.tar
tar –xvf file.tar  解包到當前目錄

gzip file.tar  壓縮檔案或資料夾
gzip –d file.tar.gz  解壓檔案或資料夾

tar -czvf file.tar.gz dirpath filepath  將dir資料夾和file檔案在當前目錄下打包並壓縮成file.tar.gz
tar -xzvf file.tar.gz  解壓並解包到當前目錄下
tar -xzvf file.tar.gz -C /home/dijia478/  解壓並解包到/home/dijia478/目錄下

常用引數:
-c:建立一個新tar檔案
-v:顯示執行過程的資訊
-f:指定檔名
-z:呼叫gzip壓縮命令進行壓縮
-t:檢視壓縮檔案的內容
-x:解開tar檔案

zip test.txt.zip test.txt  也是打包並壓縮
unzip test.txt.zip  解包並解包

6.檢視文字檔案

cat a.txt  一次性顯示整個檔案內容
more a.txt  可以分頁看(翻頁:空格,往回翻:b ,退出: q或者 Ctrl+C)
less a.txt  不僅可以分頁,還可以方便地搜尋,回翻等操作(翻頁:空格,往回翻:↑,往下翻:↓,退出:q或者 Ctrl+C)

tail -10 a.txt  檢視檔案的尾部的10行
tail -f user.log  實時重新整理顯示檔案的尾部,這條命令對於觀察偵錯程式的執行非常重要

head -20 a.txt  檢視檔案的頭部20行
註:ctrl+c 結束檢視

7.搜尋查詢命令

grep‘haha’./*  列印當前目錄下所有檔案中含有'haha'的地方(支援正規表示式)
grep -c‘haha’./*  顯示匹配到的行數
grep -r‘haha’./*  對子目錄也進行遍歷搜尋
grep -l‘haha’./*  只顯示命中的檔名
grep -n‘haha’./*  顯示命中的行號
grep -ld skip‘haha’./* 顯示命中的檔名,不要搜尋子目錄

引數含義:
-r 遞回搜尋子目錄
-l 只列出有匹配行的檔名
-n 列出匹配行的行號
-d skip 不搜尋子資料夾

常用grep跟其他命令組合使用來查詢我們關心的資訊(管道)
範例:
service --status-all | grep 'httpd'  在當前系統所有服務中查詢'httpd'
netstat -nltp | grep '22'  查詢監聽'22'埠的服務程式
ps –ef | grep Java  查詢系統中當前執行的java進程

find ./ -name '*.txt'  查詢以.txt結尾的檔案(會遍歷當前目錄)
find ./ -name ‘install*’  查詢以install開頭的檔案或資料夾
find ./ -type f  查詢普通檔案
find ./ -type l  查詢連線檔案(快捷方式)

8.文字命令

> 重定向輸出,覆蓋原有內容;
>> 重定向輸出,又追加功能;
cat /etc/passwd > a.txt  將密碼檔案輸出定向到a.txt中
cat /etc/passwd >> a.txt  輸出並且追加
ifconfig > ifconfig.txt  儲存ip資訊到檔案中

wc -l a.txt  統計文字行數
wc -w a.txt  統計文字單詞數
wc -m a.txt  統計文字字元數
wc -c a.txt  統計文字位元組數

vi編輯器
vi filepath  開啟檔案
按Esc鍵  切換到命令列模式
切換到插入模式:
i  在當前位置生前插入
I  在當前行首插入
a  在當前位置後插入
A  在當前行尾插入
o  在當前行之後插入一行
O  在當前行之前插入一行
dd  刪除整行
7 dd  向上刪除7行
U  回退(類似於windows 中 ctrl + z)
R  替換
:(冒號)  切換到底行模式
:q  退出
:wq  儲存並退出(shift + zz也可以儲存)
:q!  不儲存退出

9.其他常用命令

echo $JAVA_HOME  輸出變數JAVA_HOME的值

whoami  查詢當前登陸的使用者名稱
which ls  查詢ls命令的$PATH路徑

mkdir test && cd test
只有在 && 左邊的命令返回真(命令返回值 $? == 0),&& 右邊的命令才會被執行。 
只要有一個命令返回假(命令返回值 $? == 1),後面的命令就不會被執行。

三、使用者管理命令

1.新增使用者

基本範例:
useradd user001

passwd 123456  需要設定密碼

引數手冊:
-u 指定組ID(uid)
-g 指定所屬的組名(gid)
-G 指定多個組,用逗號“,”分開(Groups)
-c 使用者描述(comment)
-d 指定使用者目錄
-e 失效時間(expire date)

2.刪除使用者

userdel user002  這樣刪除的時候,使用者的主目錄會被保留
userdel -r user002  刪除使用者的同時刪除使用者的主目錄

3.修改使用者屬性

指令:usermod
引數:
-l 修改使用者名稱 (login)usermod -l a b(b改為a)
-g 修改組 usermod -g sys tom
-d 修改使用者的宿主目錄
-G 新增多個組 usermod -G sys,root tom
-L 鎖定使用者賬號密碼(Lock)
-U 解鎖使用者賬號(Unlock)
範例:
usermod -l user002 user001  將user001的登陸名改為user002
usermod -g root user002  將user002的組改為root組
usermod -G hello1,hello2 user002  給user002新增兩個組hello1,hello2
usermod -d /home/dijia478 user002  將user002的主目錄改成/home/dijia478
(要事先建立dijia478目錄,並且拷入環境變數檔案)

4.使用者組管理

使用者組相關屬性:
每個使用者至少屬於一個使用者組
(建立新使用者時如果不指定所屬組,則會自動建立並歸屬到一個跟使用者名稱同名的組)
每個使用者組可以包含多個使用者
同一個使用者組的使用者享有該組共有的許可權
使用者組管理操作命令:
groupadd java  建立使用者組
groupdel hello2  刪除使用者組
groupmod –n newname oldname  修改使用者組名稱
groups user002  檢視用所屬的組

5.使用者及使用者組相關組態檔

使用者設定資訊存放位置:
儲存使用者資訊的檔案:/etc/passwd
儲存密碼的檔案:/etc/shadow

passwd檔案範例:
user002:x:500:500:user002:/home/user002:/bin/bash
passwd檔案各欄位含義:
account:password:UID:GID:GECOS:directory:shell

shadow檔案範例:
user002:$1$vRug41$UUxYzdP0i6s6wtUPieGDQ/:18617:0:99999:7:::
shadow檔案各欄位含義:

使用者名稱

登陸系統的使用者名稱

密碼

加密密碼

最後一次修改時間

使用者最後一次修改密碼距現在的天數,從1970-1-1起

最小時間間隔

兩次修改密碼之間的最小天數

最大時間間隔

密碼有效天數

警告時間

從系統警告到密碼失效的天數

賬號閒置時間

賬號閒置時間

失效時間

密碼失效的天數

標誌

標誌

使用者組設定資訊存放位置:
儲存使用者組的檔案:/etc/group
儲存使用者組密碼的檔案:/etc/gshadow(設定組管理員時才有用)

6.其他的使用者管理命令

id user002  檢視一個使用者的UID和GID
su user001  切換到user001使用者
su - user001  切換到user001使用者,並且將環境也切換到user001使用者的環境(推薦使用)
exis  退出當前shell(會退出當前登入使用者)

四、網路設定管理

1.網絡卡地址設定

檢查網路連通性:
ping  要測試的ip

檢視ip地址
ifconfig  檢視所有網路裝置的地址資訊
ifconfig eth0  檢視指定的eth0乙太網卡的地址資訊

修改ip地址
ifconfig eth0 192.168.2.150 netmask 255.255.255.0

通過setup修改網路設定
在root許可權下執行setup指令可以開啟一個帶選單的偽圖形介面來修改網路設定

通過組態檔修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改該組態檔即可改ip地址

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0c:29:f1:b2:e8   #網絡卡實體地址

IPV6INIT=yes

NM_CONTROLLED=yes

ONBOOT=yes

TYPE=Ethernet

UUID="b3cd1ac3-aecf-4845-9812-9337135c072b"

IPADDR=192.168.2.199    # IP地址

NETMASK=255.255.255.0  #子網掩碼

DNS2=8.8.8.8     #域名伺服器2

GATEWAY=192.168.2.1    #閘道器

DNS1=192.168.2.1     #域名伺服器1

USERCTL=no

2.主機名設定管理

檢視主機名
在shell提示符的@後有顯示
或者用hostname指令列印出主機名

修改主機名
vi /etc/sysconfig/network  修改其中的hostname設定項:
HOSTNAME=newname
修改完成之後要重新啟動伺服器才能生效
要想立即生效,可以執行指令 hostname newname,然後登出重登陸

主機名-IP對映,伺服器本地對映
伺服器網路定址時預設是現在原生的hosts檔案中查詢IP對映,通過修改hosts來對映區域網內部的主機名非常方便
實現方法,將區域網內的每一台主機的“hostnamip”寫入每一台主機的hosts檔案中:
vi /etc/hosts
192.168.2.150 user001-server-01
192.168.2.151 user001-server-02
192.168.2.152 user001-server-03

3.網路服務啟動與停止

列出系統所有應用服務狀態:
service --status-all
檢視指定服務執行狀態:
service servicename status
啟動服務:
service servicename start
停止服務:
service servicename stop

列出所有服務的隨機自起設定:
chkconfig --list
關閉服務的隨機自起:
chkconfig servicename off
開啟服務的隨機自起:
chkconfig servicename on

常用範例:
重新啟動網路服務:service network restart
停止httpd:service httpd stop
啟動httpd:service httpd start
關閉防火牆服務:service iptables stop
關閉防火牆自動啟動:chkconfig iptables off

4.檢視網路連線資訊

指令:netstat
netstat常用範例:
netstat -natp
netstat -nltp
netstat -naup

netstat -an | grep 3306 查詢3306埠占用情況

常用引數解釋:
-a 顯示所有連線和監聽埠
-l 只顯示監聽進程
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數位的全部轉化成數位。
-p 顯示建立相關連結的程式名

五、常用系統管理命令

1.磁碟/記憶體使用資訊檢視

df -h  檢視磁碟空間狀態資訊
du -sh *  檢視指定目錄下所有子目錄和檔案的彙總大小   
free  檢視記憶體使用狀況

2.進程管理

top  檢視實時重新整理的系統進程資訊
ps -ef  檢視系統中當前瞬間的進程資訊快照
ps -ef | grep myshell.sh  搜尋myshell進程的資訊
kill -9 pid  殺掉進程(-9 表示強制殺死)

3.sudo許可權的設定

root使用者因為具有不受限制的許可權,使用不慎可能對系統造成不可估量的損害,因而,生產實際中,輕易不要使用su去切換到root的身份
如果普通使用者需要使用一些系統級管理命令,可以使用sudo來執行,比如 sudo vi /etc/profile
給普通使用者賦予sudo許可權,設定方法如下:
例如,要給Hadoop使用者賦予sudo任何指令(或某條指定的命令)的權利,則編輯sudoers檔案 vi /etc/sudoers
在其中加入需要賦予許可權的使用者(紅色標識

……

 

root    ALL=(ALL)       ALL

#讓hadoop使用者可以用root身份執行所有指令

hadoop  ALL=(ALL)       ALL

#讓user002使用者可以用root身份執行所有指令

Itcast ALL=(root)   /usr/sbin/useradd, /usr/bin/passwd

 

……

 

檢查是否生效:

[root@user001-server-01 user002]# sudo -lU user002

User user002 is not allowed to run sudo on user001-server-01.

4.修改系統的預設啟動級別

vi /etc/inittab


#  0 - halt (Do NOT set initdefault to this)
#  1 - Single user mode
#  2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#  3 - Full multiuser mode
#  4 - unused
#  5 - X11
#  6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
~
用level 3 就啟動全功能狀態的命令列介面,5是圖形介面。不要設定其他的,容易作死。
在命令列模式下,用startx可以手動啟動圖形介面(在伺服器上操作)

5.檔案許可權管理

Linux三種檔案型別:
普通檔案: 包括文字檔案、資料檔案、可執行的二進位制程式檔案等。
目錄檔案: Linux系統把目錄看成是一種特殊的檔案,利用它構成檔案系統的樹型結構。  
裝置檔案: Linux系統把每一個裝置都看成是一個檔案
檔案型別標識:
普通檔案(-)
目錄(d)
符號連結(l)
* 進入etc可以檢視,相當於快捷方式
字元裝置檔案(c)
塊裝置檔案(s)
通訊端(s)
命名管道(p)
檔案許可權管理:
chmod u+rwx a.txt  為a.txt新增所屬使用者的rwx許可權
chmod 755 a.txt  為a.txt設定所屬使用者rwx許可權,所屬組rx許可權,其他使用者rx許可權(r-4,w-2,x-1)
chmod u=rwx,g=rx,o=rx a.txt  (u代表所屬使用者 g代表所屬組的成員使用者 o代表其他使用者)
chown user001:hello1 a.txt  將a.txt的所有者改成user001使用者,所屬組改成hello1組(需要root許可權)
chown -R user001:hello1 dir  將dir資料夾的所有者改成user001使用者,所屬組改成hello1組(需要root許可權)

6.其他系統管理命令

date "+%Y%m%d"  按格式顯示當前系統時間
date -s "2020-01-01 10:10:10"  設定系統時間
clear  清螢幕(只是滾到上面看不到了)
uname 顯示系統資訊。
uname -a 顯示本機詳細資訊。
依次為:核心名稱(類別),主機名,核心版本號,核心版本,核心編譯日期,硬體名,處理器型別,硬體平台型別,作業系統名稱

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-12/149314.htm


IT145.com E-mail:sddin#qq.com