Linux指令小筆記
以CentOS為藍本,記錄自己在使用Linux上面的一些指令小筆記(小抄),日後會視情況隨時回來更新。
查詢CentOS版本
cat /etc/centos-release
Console系列
tty / pty /pts 縮寫說明
tty(Teletypes)、pty(pseudo-tty,相當putty角色)、pts(pseudo-terminal slave,服務pty的奴隸)
Ctrl + L
清除畫面,相當於cls。
Ctrl + Z
暫停執行緒,可以再打入fg繼續執行。
Ctrl + D
送出結尾(結束)字元,例如:cat > test.txt,然後打了數行文字之後,就可以使用這個指令關閉檔案。
Ctrl + U
快速清除當前命令列所輸入的字串,不用一直按Backspace鍵。
Ctrl + ALT + F1 ~ F6
切換主控台,限定在本機主控台才有此運行功能。
~
Console下面的這個符號,代表你現在正在系統定義的home目錄內。可以使用「cd ~」快速切換到自己的home目錄。
/usr
用戶目錄。
/root
系統管理者目錄,沒有放在/home的原因是因為有些系統根本沒有任何user的home目錄。
date
查詢日期。
logout
登出系統。
shutdown -h now
-h 依照BIOS規範來進行關閉或休眠電腦;-P (一定要大寫) 強制關閉電腦;-r 重置電腦(相當reboot)。
whereis
查詢現在執行指令的檔案位於何處,例如:whereis logout。
who
查詢現在主機上有誰(無論本機或遠端)。
whoami
顯示現在使用者。
passwd
變更密碼。
ip addr | ifconfig
查詢網路卡相關資訊,CentOS 7後改ip addr。
systemctl status NetworkManager.service
測試CentOS 7的Network Manager是否有在運作,如果出現綠色的active (running)就代表有在執行。重新啟動服務:service network restart。
nmtui
進入視覺化的網路卡設定介面,亦可以在這裡面變更主機名稱。
cat
concatenate,用來檢查檔案或檢視目錄,例如:cat /etc/init[TAB][TAB],就會幫你列舉出etc目錄下所有的init開頭的檔案。
pwd
Print Working Directory;顯示當前完整路徑。
cp | mv | rm
Copy、Move、Remove,加入-f參數(force)可以不用問Y/N。
rm也有重新命名檔案的功能,例如在同一資料夾下:rm Old.txt New.txt就改成新名字了。
mkdir | rmdir | rm -r
mkdir 製作目錄
rmdir 移除目錄(只能移除空目錄)
使用rm -r、rm -rf來進行強制刪除動作。
man XXX
manual;查詢XXX指令的使用說明,進行中可使用「/」可以搜尋內文。
info XXX
更口語化的指令說明書,但不一定什麼指令都有。
more | less
分頁檢視,建議使用less更佳,可前後翻頁捲動且利用冒號指定輸出筆數,按q離開。
ln
Link,建立檔案或資料夾的軟連結或硬連結,軟連結要下參數「-s」。例如:ln -s 原資料夾 新命名資料夾。
df -h
Disk Free,顯示系統硬碟容量(磁碟空間),檢視全部可以使用-ah。
find / 檔案名稱
從根目錄開始搜尋命中檔案名稱的檔案。
grep
global regular expression print;在特定對象檔案中,搜尋特定的字眼,例如:grep test Readme。
yum / Ubuntu OS 請改使用 apt-get
軟體套件安裝器,例如:yum -y install wget
yum install 套件名稱
yum update 套件名稱
yum update(直接更新所有套件)
yum remove 套件名稱
yum search 套件名稱
yum list 列舉所有套件
sudo
在每個指令的前面加上這個字眼,就是以最高管理權限root運行,類似Window UAC(User Account Control;使用者帳戶控制)機制。只是其實在Linux CLI介面裡,哪個動作不是你意圖以最高管理者的身分進行,所以弄到最後幾乎每一行都是sudo開頭,這樣一來就跟Windows Vista那時候被罵得要死的原因一致了,要規避這個問題,可以使用「sudo -i」直接切換到root,不過風險就跟關閉UAC一樣了。
mount -t 檔案類型 /dev/設備 /media/名稱
掛載設備,要進行指令前,請先到media mkdir一下。
檔案類型列表:
iso9660 CDROM
msdos Windows FAT16
vfat Windows FAT32
ntfs Windows NTFS
nfs Linux nfs
smbfs Samba
ext2 EXT2
ext3 EXT3
ext4 EXT4
umount -v /dev/設備
卸載設備,建議直接去解除/dev/設備(不會真的讓媒體不見),系統會發現這是一個device,進而去消除目前所有進行軟連結的目錄,例如移除/media/下面的cdrom目錄中所有的檔案,但不會刪除/media/cdrom/。
mount USB 注意事項
- 如果你的USB隨身碟式USB 3.0,那記得要去變更VM裡面USB的相容性為3.0。
- 如果你是用VMWare的話,一定要點進去Console畫面中再去插入USB才抓的到,不然會被Windows攔截走。
- 基本上CentOS根本不認識NTFS,所以你要下載兩個安裝包。
- A、yum -y install epel-release #一定要先裝EPEL (Extra Packages for Enterprise Linux)
- B、yum -y install ntfs-3g
- 一旦識別到USB,/dev/裡面一樣會叫做sdb、sdb1之類的,通常後面有數字才是對的磁區。
建立群組與使用者
建立群組:groupadd TestRD
建立使用者並綁定群組:useradd -g TestRD john
看一下使用者目前的群組資訊:id john 幫使用者改密碼:passwd john
幫使用者加入一個新群組:usermod -G 新群組名稱 john
移除使用者
- 移除使用者(連同HOME目錄下的資料夾): userdel -r john
- 如果使用者在線上就會顯示這個訊息: userdel: user john is currently used by process 7653
- 先用who查一下有哪些使用者:
john pts/1 2019-05-01 15:36 (your.domain.name) - 查一下pts/1當前的工作ProcessID: ps -t pts/1
7654 pts/1 00:00:00 bash - 找到PID後就線上踢出(該使用者的putty會斷線): kill -hup 7654
- 接著就可以移除使用者了: userdel -r john
- 刪除群組: groupdel TestRD
ps | top
ps可以查看行程,並且搭配watch進行即時性更新,例如看前5大CPU使用的執行緒。
watch -n1 "ps aux --sort=-pcpu | head -n 6"
# 6是包含標題計算進去;aux表示所有執行緒
可以用更精簡現代化的指令「top」,例如:
top -d 1 # 進入後可以用按下「大寫P」看CPU排序、「大寫M」看Memory排序
ps 背景執行緒
讓bash不要被執行緒鎖死,丟到背景跑。
sleep 60 #睡60秒,此時bash可以繼續輸入指令
ps -f #查看自己目前的執行緒,就可以看到剛才下的command有在背景跑
kill pid
殺掉背景執行緒,可以加入「-9 參數」強制執行。
jobs
透過jobs指令可以觀察到利用「ps '執行緒' &」藏到背景去的執行緒,其結果顯示的[ID]亦可以用來進行切換至前景觀察的指令目標,例如:[root@SlashCentOS ~]# jobs
[1]- Stopped top -d 1
[2]+ Stopped watch -n1 'ps aux'
可以利用fg 2切換過去觀察。
ntpdate
網路校時:ntpdate watch.stdtime.gov.tw
回寫硬體RTC時間:hwclock -w
crontab
chronograph的縮寫
系統排程,存放於 /etc/crontab,例如每分鐘丟出訊息到信箱:
*/1 * * * * root echo $'Hello Wrold!'
編輯後可以用下列指令重置:systemctl restart crond.service
alias
自訂指令縮寫,例如:ll(代表ls -l)。
可以取出home目錄下的.bashrc起來編輯,開啟檔案就知道格式怎麼寫了。
ftp | lftp | ncftp
FTP Client端軟體。若有出現無法順利地使用加密連線,只能連線一般無加密陽春FTP的狀況,不妨請FTP網管人員,設定一下伺服器的config。
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
並且到FTP伺服器設定好被動式FTP的Port Mirror。
bash
Born-Again-SHell,Unix shell的一種。來一段可執行的小script:
vi myBash
-----
#注意變數的賦值「等號左右不可以有空白,不然等著吃鱉」
Today=$(date +%Y-%m-%d)
RanNum=$RANDOM
echo Today is "$Today", and you are "$USER".
echo Your money total: "$RanNum"
echo $'\a' #設定電腦嗶嗶鈴聲
-----
chmod u+x myBash #設定為可以執行
-----
./myBash #執行Bash
ntsysv
查看看Linux系統裡面有哪些開機被啟動的系統服務。
httpd
利用yum安裝Apache伺服器。
設定檔放置於 /etc/httpd/conf/httpd.conf | less
檔案目錄放置於 /var/www/html/
systemctl status firewalld
測試CentOS 7的防火牆是否有在運作,如果出現綠色的active (running)就代表有在執行。重新啟動服務:service firewalld restart。
防火牆
打開80 Port防火牆:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
變更檔案目錄擁有者
chown 用戶名稱:群組名稱 某目錄或檔案
變更檔案目錄存取權限
chmod,權限計算請在網路搜尋「Chmod 計算機」。
vim相關操作(若有nano編輯器的話建議用nano即可,不要用vi like的編輯器)
yy #複製該行
p #貼上
dd #刪除整行
u #回復動作
-----
i #進入編輯模式
esc #離開編輯模式
-----
/ #搜尋
n #下一個
N #上一個
-----
:set nu #顯示行號
:set nonu #不顯示行號
:wq! #寫入並離開