常用命令
參考
雜項
- ssh免密登錄
ssh-copy-id remote-machine
比如 ssh-copy-id pengdl@localhost -p 8765
這個命令把當前用戶的公鑰串寫入到遠程主機的~/.ssh/authorized_keys內,這樣下次使用ssh登錄的時候,遠程主機就直接根據這串密鑰完成身份校驗,不再詢問密碼了。前提是你當前用戶有生成了公鑰,默認是沒有的,先執(zhí)行ssh-keygen試試吧!
也可以手動完成:
your-machine$ scp ~/.ssh/identity.pub remote-machine:
your-machine$ ssh remote-machine
remote-machine$ cat identity.pub >> ~/.ssh/authorized_keys
如果你想刪掉遠程主機上的密鑰,直接打開authorized_keys,搜索你的用戶名,刪除那行,即可.
- 清空文件
> file
- 以HTTP方式共享當前文件夾的文件
python -m SimpleHTTPServer 8080
這命令啟動了Python的SimpleHTTPServer模塊,考慮到Python在絕大多數的Linux發(fā)行版當中都默認安裝,所以這個命令很可能是最簡單的跨平臺傳文件的方法。
命令執(zhí)行后將在本機8000端口開放HTTP服務,在其他能訪問本機的機器的瀏覽器打開ttp://ip:8000即打開一個目錄列表,點擊即可下載。
python3的話
python3 -m http.server 8080
- 以sudo運行上條命令
sudo !!
- 顯示當前目錄中所有子目錄的大小
du -h --max-depth=1
- 當前目錄下的文件和子目錄按大小排序
du -sb * | sort -g | numfmt --to=iec
du -sh * | sort -rh | head -n 10
- 在以普通用戶打開的vim當中保存一個root用戶文件
:w !sudo tee %
這題目讀起來糾結,其實是很常見的,常常忘記了sudo就直接用vim編輯/etc內的文件,(不過也不一定,vim發(fā)現(xiàn)保存的文件無法保存時候會提示)等編輯好了,保存時候才發(fā)現(xiàn)沒權限。曲線方法是先保存?zhèn)€臨時文件,退出后再sudo cp回去。不過實際上在vim里面可以直接完成這個過程的,命令就是如此。
查閱vim的文檔(輸入:help :w),會提到命令:w!{cmd},讓vim執(zhí)行一個外部命令{cmd},然后把當前緩沖區(qū)的內容從stdin傳入。tee是一個把stdin保存到文件的小工具。而%,是vim當中一個只讀寄存器的名字,總保存著當前編輯文件的文件路徑。
所以執(zhí)行這個命令,就相當于從vim外部修改了當前編輯的文件,好完工。
- 快速備份一個文件
$ cp filename{,.bak}
這道命令把filename文件拷貝成filename.bak,大家應該在一些比較復雜的安裝教程里面見過這樣的用法。其原理就在于bash對大括號的展開操作,filename{,.bak}這一段會被展開成filename filename.bak再傳給cp,于是就有了備份的命令了。
- 想知道一臺服務器什么時候重啟完
ping -a IP
系統(tǒng)管理員最常做的事情是重啟系統(tǒng)。但是服務器的重啟過程往往得花上好幾分鐘,什么你的服務器4個scsi卡?16個硬盤?系統(tǒng)是Redhat?還完全安裝所有組件?好吧,它重啟的時間都夠你吃頓飯了,所以我很想知道它什么時候回來。ping命令有個audible ping參數,-a,當它終于ping通你的服務器時會讓小喇叭叫起來。
進程
-
查看進程樹
pstree -ansp [pid]
ps af
pstree -Aaps -
查看R和D狀態(tài)的進程
ps r -A -
查看線程信息
ps -T
top -H
pidstat -t
pstree -t -
查看線程組
ps -Tp <pid> # 這里<pid>是主線的pid -
查看進程所屬的cgroup
ps -eo pid,ppid,cmd,cgname -
查看進程的信號屏蔽狀態(tài)
ps -C bash s
-
收集R狀態(tài)的線程
top -H -c -b -n 1 | grep " R " -
收集D狀態(tài)進程的調用棧
- 方法一
echo d > /proc/sysrq-trigger- 方法二
ps -e -o pid,state,cmd | grep " D " | awk '{printf "echo \"%s\";cat /proc/%s/stack;\n",$0,$1}' | bash -
atop 獲取進程退出信息
https://bean-li.github.io/atop-exit-code/ -
strace萬能命令
strace -T -f -tt -e trace=all -p pid -o xxxx.txt -
啟動時間
uptime
who -b -
進程的啟動時間
/proc/<pid>/stat的第21項表示:startime詳細介紹參考 man proc
-
shell死循環(huán)命令
while true; do continue; done # or while :; do :; done -
將秒轉換為時間(自1970年開始的秒數)
date -d @12345678
echo <magic> > /proc/sysrq-trigger
| 字符 | 用途 |
|---|---|
b |
立刻重啟系統(tǒng),不會同步文件系統(tǒng)和umount磁盤 |
c |
觸發(fā)系統(tǒng)crash,如果配置了kdump,那么會生成crashdump文件 |
f |
手動觸發(fā)一次oom killer |
l |
輸出系統(tǒng)中所有active cpu的當前調用棧 |
t |
輸出系統(tǒng)中所有線程的調用棧,以及工作隊列的調用棧 |
d |
輸出所有D狀態(tài)的線程調用棧 |
每個字符對應的回調函數可以參考drivers\tty\sysrq.c中的sysrq_key_table。
-
使用top的批處理模式獲取R狀態(tài)進程
top -d 1 -b | grep -e "^top" -e "^Tasks:" -e " R " -
如果想獲取線程的話,使用:
top -d 1 -b -H | grep -e "^top" -e "^Tasks:" -e " R "
內存
磁盤
- 查看所有塊設備的IO調度器
cd /sys/block
ls -l | awk '{printf("echo %s;cat $s/queue/scheduler;", $9, $9);}'
-
查看塊設備名字跟具體設備的對應
ls -l /sys/block
ls -l /sys/class/block -
查看磁盤是固態(tài)還是機械
- linux固態(tài)硬盤和機械盤,判斷l(xiāng)inux磁盤是固態(tài)硬盤還是機械硬盤的方法
- smartctl -i /dev/xxx
文件系統(tǒng)
- 批量更新文件時間戳
find -type f -exec touch {} \;
CPU
-
使用atop排查 誰引起了CPU小尖峰
https://bean-li.github.io/CPU-sharp-pulse/ -
使用perf 分析ceph CPU usage High
https://bean-li.github.io/perf-check-ceph-osd-cpu-high/
網絡
-
查看中斷發(fā)生情況
- 中斷性能監(jiān)控工具irqtop和lsirq
irqtop
lsirq
- 中斷性能監(jiān)控工具irqtop和lsirq
-
查看PCI網卡
lspci | grep Eth -
查看網卡名字對應的設備
ls /sys/class/net -l -
網絡狀態(tài)的統(tǒng)計
ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' -
網絡錯誤
sar -n ETCP 1 或者 sar -n EDEV 1 -
查看系統(tǒng)中占用端口的進程
netstat -tulnp
雜項
-
查看文件內容
more /proc/sys/kernel/sched*
這個命令比cat命令的好處在于可以顯示查看的文件的文件名。 -
使用grep
grep "" *或者grep '' */*或者grep "" */* -
模塊加載
# 加載模塊時開啟dynamic debug,參考Documentation\admin-guide
modprobe acpi_cpufreq dyndbg="func acpi_cpufreq_init line 955 +p"
本文來自博客園,作者:dolinux,未經同意,禁止轉載

浙公網安備 33010602011771號