Linux常用命令100

尹成發表於2018-11-16

@日常命令

cd .. // 返回上一級目錄
cd - // 返回上一次目錄
cd或cd ~ // 返回家目錄
cd / // 進入根目錄

pwd // 顯示當前目錄
ls // 顯示當前目錄檔案
ls localrepo/ // 顯示指定目錄的檔案
ll // 檢視目錄檔案的的詳細資訊
la // 檢視全部包括隱藏的目錄檔案
tree // 檢視當前目錄檔案樹
tree mydir // 檢視指定目錄的檔案樹
touch hello.py // 建立空檔案

mkdir mydir // 建立資料夾
mkdir -p a/b/c // 建立層級目錄
mkdir -p a/{b,c}/{d,e} // 同一級建立多個資料夾

cp hello.py ~/hello2.py // 拷貝檔案
cp hello.py -i hello2.py // 拷貝檔案,如果有同名檔案詢問是否覆蓋
cp hello.py -f hello2.py // 拷貝檔案,如果有同名檔案強制覆蓋
cp hello.py -n hello2.py // 拷貝檔案,如果有同名檔案不覆蓋

mv hello2.py hellocp.py // 重新命名檔案
mv hello.py ~/Desktop // 移動檔案
rm hellocp.py // 刪除檔案
rm -rf localrepo/ // 遞迴刪除目錄

find ~/Desktop/ -name '*.py' // 在指定目錄中查詢檔案
whereis python // 查詢可執行程式
which python // 檢視當前使用的是哪個目錄中的python

ln -s /usr/bin/python ./mypylink // 建立可執行程式的軟連結
alias rrm='rm -rf' // 給命令起別名,需要root許可權(不建議使用)
history // 檢視命令歷史
clear // 清屏(快捷鍵Ctrl+l)

@命令速查

rm --help // 檢視rm命令幫助
man rm // 檢視rm命令的手冊解釋
info rm // 檢視rm命令詳細資訊

@更多查詢

find ~/ -name '*.py' -exec rm {} \;	查詢家目錄下所有的py檔案並刪除,{}與exec結合匹配所有檔案
find ~/ -name '*.py' -exec chown wife {} \;		查詢家目錄下所有py檔案並將所有權轉讓給wife使用者
find ~/ -name '*.py' -exec cat {} \;> record.txt	查詢檔案並將全部內容拼接並寫入檔案中
find ~/ -name '*.py' -exec cp {} mydir \;		查詢檔案並拷貝到指定目錄

grep 'def.*' a.py	在a.py中查詢指定內容
grep 'def.*' a.py b.py c.py	在多個檔案中尋找指定內容
grep -v 'def.*' a.py	在a.py中查詢指定內容以外的內容
grep -i "HELLO" a.py	在a.py中查詢指定內容並忽略大小寫
grep -E "[1-9]+" a.py	在a.py中查詢正規表示式匹配的內容(匹配1到多個數字)
grep -F "[1-9]+" a.py	在a.py中查詢純文字內容(嚴格匹配字串"[1-9]+")
grep -e "def.*" -e "class.*" a.py	在a.py中查詢多個內容
grep "text" ./ -r -n	在當前目錄下遞迴查詢內容

@系統管理

poweroff	關機
reboot	重啟
shutdown -h 12:00	定時關機
shutdown -h now		立刻關機
shutdown -c			取消定時關機

#結合1,檢視所有CPU平均負載/每個CPU的具體負載
#結合M/P/T,按記憶體佔用/CPU佔用/執行時間的降序,檢視程式資訊
top					顯示所有系統任務

free -m 			檢視記憶體佔用,以M為單位
uname -a			列印作業系統資訊
uptime -p			檢視系統執行時間
echo $PATH			檢視環境變數
export PATH=$PATH:/home/sirouyang/Desktop/	追加環境變數
lsof | head -n 10	檢視程式開啟的檔案(一切皆檔案,資料檔案、網路連線、硬體裝置)
lscpu				檢視CPU資訊

time lsof		統計命令執行時間
cal/date			檢視日曆和時間
date +%y-%m-%d-%H-%M-%S	格式化地檢視時間

# 0-6:0停機-1單使用者安全模式-2多使用者安全模式-3多使用者網路模式-4系統保留級別-5圖形介面-6重啟
runlevel		顯示當前執行級別
init 6			切換執行級別

@軟體安裝

//方式一:通過包管理工具apt進行管理
sudo apt update // 更新軟體源
sudo apt search xxx//查詢xxx軟體包
sudo apt install net-tools //安裝net-tools
sudo apt remove --purge net-tools //徹底解除安裝net-tools

//方式二:編譯原始碼
wget "http://...........xxx.tar.gz" //下載原始碼包
tar -zxvf xxx.tar.gz //解壓原始碼包
make clean	清除編譯的垃圾
make		執行編譯
make install	安裝
make uninstall	解除安裝

可選:./configure	如果原始碼包中自帶配置程式則執行之
可選:sudo apt search libxxx //如果編譯失敗通常會提示缺少xxx依賴,此時應該搜尋並安裝該依賴
可選:sudo apt install libxxx-dev //安裝檢索到的依賴

@文字命令

cat hello.py // 檢視檔案
gedit hello.py // 使用gedit檢視檔案
head -n 10 hello.py // 檢視前10行
tail -n 10 hello.py // 檢視後10行
less hello.py // 一次檢視少量內容,PageUp和PageDown鍵翻頁
vim hello.py // 使用vim開啟檔案

@管道與重定向

sort hello.py | uniq -c // 排序後統計次數
sort hello.py | uniq -d // 排序後找出重複的行
cat /proc/cpuinfo | grep -c processor // 顯示CPU核心數
echo 'newline' > hello.py // 將結果寫入檔案(覆蓋)
echo 'newline' >> hello.py // 將結果追加到檔案
cat < ~/proc/cpuinfo //將指定的檔案作為cat的輸入

@壓縮和解壓

tar -cvf /home/abc.tar /home/abc    只打包,不壓縮(c=建立壓縮包,v=列印資訊,f=指定檔名)
tar -zcvf /home/abc.tar.gz /home/abc    打包,並用gzip壓縮
tar -jcvf /home/abc.tar.bz2 /home/abc    打包,並用bzip2壓縮

tar -xvf abc.tar 解壓普通tar包(x=解壓縮)
tar -zxvf abc.tar.gz 解壓gz壓縮包
tar -jxvf abc.tar.bz2 解壓bz2壓縮包

zip -r xxx.zip abc/* fuck/* temp/* 遞迴壓縮多個資料夾到xxx.zip
unzip xxx.zip #解壓zip壓縮包

@磁碟管理

df -h /					檢視磁碟使用情況
sudo du -h ~			檢視使用者目錄的磁碟使用情況
du -sh					當前目錄的總體佔用情況
du abc.tar.gz abc.tar	檢視檔案和目錄的磁碟佔用
dd if=/dev/zero of=temp.txt bs=1K count=1024	寫入一個充滿0的檔案,每塊1K,共1024塊,總大小1M
time dd if=/dev/zero of=temp.txt bs=1M count=1024	測試寫入1G檔案的時間(以此衡量磁碟的讀寫效率)

@登入日誌

last 檢視使用者近期登陸情況
last -2 最近登陸的兩個使用者
last -2 root 檢視root使用者最近兩次登陸情況

id	顯示使用者及其群組資訊
groups	檢視當前使用者所加入的組
whoami	顯示當前使用者名稱稱

@使用者與許可權

groups // 檢視所屬的工作組
whoami // 顯示當前使用者名稱稱

sudo useradd -m wife // 新建wife使用者,-m=自動建立家目錄
sudo useradd -d /home/myson -m son //建立son使用者,指定其家目錄為/home/myson
sudo useradd -g guests -G root,adm -m him //建立him使用者,屬於group組,其次也屬於adm,root組
sudo useradd -G guests,sudo -m -s /bin/bash mywife // 新增一個使用者,-m=自動建立家目錄,-s指定bash
userdel rose 刪除rose 賬號
userdel -r rose 刪除使用者及相關目錄下的檔案(/etc/passwd, /etc/shadow, /etc/group等)
usermod -s /bin/ksh -d /home/z –g developer him // 修改him使用者的shell、家目錄、所屬組等資訊
sudo passwd // 修改自己的密碼
sudo passwd mywife // 修改mywife的密碼
sudo su mywife // 切換使用者
sudo su // 切換到root使用者

sudo groupadd guests // 新增guests組
sudo groupadd -g 101 group1 //新增組group1,識別號為101
groupdel group1 //刪除組
groupmod –g 10000 -n group3 group2 //將組group2的標識號改為10000,組名修改為group3
gpasswd -a u1 g1 將u1 加入到 g1 組
gpasswd -d u1 g1 將u1 退出 g1 組
gpasswd -A u1 g1 將g1 組的管理員指派給u1

chmod 421 hello.py // 設定自己、使用者組、其他人的許可權分別為只讀、只寫、只執行
chmod a+r,u+wx,g+x,o-wx hello.py // 詳細修改全部使用者、擁有者、使用者組、其他人的許可權

/etc/passwd檔案說明:

  • 是使用者管理工作涉及的最重要的一個檔案
  • 內容包含7個欄位,例如 him❌200:50:Sam san:/usr/sam:/bin/sh
  • 含義分別為 使用者名稱:口令:使用者標識號:組標識號:註釋性描述:主目錄:登入Shell

@網路管理

sudo apt install net-tools 安裝網路工具
ifconfig // 檢視網路卡狀態
ping 192.168.59.129	// 檢查網路是否連通
wget "http://download.redis.io/releases/redis-4.0.9.tar.gz" // 下載redis
sudo apt install traceroute  安裝路徑追蹤工具
traceroute -m 100 www.sina.com		追蹤路由資訊,最大100跳

netstat -t		列出所有TCP埠
netstat -r		顯示路由表
netstat -i		顯示介面(網路卡)列表
netstat -tpnl	檢視已連線的TCP埠和程式名
netstat -anp | grep 3306 -c		檢視MySQL的連線數

@遠端登入

//安裝並啟動ssh服務
sudo apt install openssh-server 安裝openssh-server
sudo ps -ef | grep ssh 檢視SSH服務是否啟動,還可以netstat -tl | grep 22或systemctl status ssh
sudo systemctl start ssh 如果沒有啟動則啟動SSH服務

//訪問遠端主機(前提:對方開啟了ssh服務,且你知道對方的密碼,或對方持有你的ssh公鑰)
ssh root@127.0.0.1 訪問遠端主機
exit 退出遠端訪問

//執行遠端拷貝
scp -r sirouyang@192.168.158.129:/abc /home/wife/Desktop/		從遠端主機拷貝內容到本地
scp -r /abc sirouyang@192.168.158.129:/home/sirouyang/Desktop/	從本地拷貝內容弄到遠端主機(對方沒有本地的公鑰時需要密碼認證)

# ssh公鑰交換過程:遠端主機持有本地的公鑰時,ssh以及scp可以免密執行
ssh-keygen -t rsa	生成ssh祕鑰對
scp ~/.ssh/id_rsa.pub sirouyang@192.168.158.129:/home/sirouyang/.ssh/	上傳公鑰給遠端主機
ssh sirouyang@192.168.158.129	ssh登入遠端主機
cat Desktop/id_rsa.pub >> ~/.ssh/authorized_keys	操作遠端主機新增公鑰認證(今後遠端對本地ssh免密)

//一站式讓遠端持有自己的公鑰
ssh-copy-id sirouyang@192.168.158.128	讓遠端持有自己的公鑰(對方不必新增公鑰到authorized_keys)

如果遠端持有自己的公鑰後依然無法免密登入,需要修改配置檔案,請參考: https://blog.csdn.net/b_x_p/article/details/78534423

@程式管理

ps -ef // 檢視所有程式(包括登入的其它使用者的程式)
ps -aux //檢視所有程式(僅當前使用者的程式)
ps -ef | grep redis	// 查詢redis程式
kill -9 77157	// 強行殺死指定pid的程式
kill -15 77157	// 終止指定程式

@服務管理

#chkconfig服務管理
apt-get install sysv-rc-conf	安裝chkconfig服務
cp /usr/sbin/sysv-rc-conf /usr/sbin/chkconfig	重新命名一下可執行程式
chkconfig --list			檢視所有服務的開機啟動狀態
chkconfig --list mysqld		檢視mysql的開機啟動狀態
chkconfig mysqld on			設定mysql開機啟動
chkconfig mysqld off		禁止mysql開機啟動
sudo apt install firewalld	安裝firewalld
firewall-cmd --state		檢視防火牆狀態
	
#原生的service服務管理
service mysql start			啟動mysql
service mysql stop			停止mysql
service mysql restart		重啟mysql
/etc/init.d/mysql start		啟動mysql
/etc/init.d/mysql stop		停止mysql
/etc/init.d/mysql restart	重啟mysql

#systemctl服務管理(推薦方式)
systemctl status firewalld		檢視服務狀態
systemctl start firewalld 		啟動服務
systemctl stop firewalld 		停止服務
systemctl restart firewalld 	重啟服務
systemctl is-enabled firewalld 	檢視是否開機啟動
systemctl enable firewalld		設定服務開機自啟
systemctl disable firewalld 	禁止服務開機自啟

@其它命令

ls -i /usr/bin/python //檢視檔案的inode
ln /usr/bin/python ./phln // 建立硬連結(共享檔案入口)(硬連結不能跨磁碟)
source ~/.bashrc // 使修改後的bashrc生效

@一鍵安裝Ubuntu常用庫

sudo apt install man gcc make sudo lsof ssh openssl tree vim dnsutils iputils‑ping net‑
tools psmisc sysstat curl telnet traceroute wget libbz2‑dev libpcre3 libpcre3‑dev
libreadline‑dev libsqlite3‑dev libssl‑dev zlib1g‑dev git mysql‑server mysql‑client zip
p7zip golang-go libncurses5-dev libmysqlclient-dev

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章