雖然現在不是萬聖節,也可以關注一下 Linux 可怕的一面。什麼命令可能會顯示鬼、巫婆和殭屍的影像?哪個會鼓勵“不給糖果就搗蛋”的精神?
crypt
好吧,我們一直看到 crypt
。儘管名稱不同,crypt 不是一個地窖,也不是垃圾檔案的埋葬坑,而是一個加密檔案內容的命令。現在,crypt
通常用一個指令碼實現,通過呼叫一個名為 mcrypt
的二進位制檔案來模擬以前的 crypt
命令來完成它的工作。直接使用 mycrypt
命令是更好的選擇。
1 2 3 4 5 6 7 8 |
$ mcrypt x Enter the passphrase (maximum of 512 characters) Please use a combination of upper and lower case letters and numbers. Enter passphrase: Enter passphrase: File x was encrypted. |
請注意,mcrypt
命令會建立第二個副檔名為 .nc
的檔案。它不會覆蓋你正在加密的檔案。
mcrypt
命令有金鑰大小和加密演算法的選項。你也可以再選項中指定金鑰,但 mcrypt
命令不鼓勵這樣做。
kill
還有 kill
命令 – 當然並不是指謀殺,而是用來強制和非強制地結束程式,這取決於正確終止它們的要求。當然,Linux 並不止於此。相反,它有各種 kill
命令來終止程式。我們有 kill
、pkill
、killall
、killpg
、rfkill
、skill
()讀作 es-kill)、tgkill
、tkill
和 xkill
。
1 2 3 4 5 6 |
$ killall runme [1] Terminated ./runme [2] Terminated ./runme [3]- Terminated ./runme [4]+ Terminated ./runme |
shred
Linux 系統也支援一個名為 shred
的命令。shred
命令會覆蓋檔案以隱藏其以前的內容,並確保使用硬碟恢復工具無法恢復它們。請記住,rm
命令基本上只是刪除檔案在目錄檔案中的引用,但不一定會從磁碟上刪除內容或覆蓋它。shred
命令覆蓋檔案的內容。
1 2 3 4 |
$ shred dupes.txt $ more dupes.txt ▒oΛ▒▒9▒lm▒▒▒▒▒o▒1־▒▒f▒f▒▒▒i▒▒h^}&▒▒▒{▒▒ |
殭屍
雖然不是命令,但殭屍在 Linux 系統上是很頑固的存在。殭屍基本上是沒有完全清理掉的死亡程式的遺骸。程式不應該這樣工作 —— 讓死亡程式四處遊蕩,而不是簡單地讓它們死亡並進入數字天堂,所以殭屍的存在表明了讓他們遺留於此的程式有一些缺陷。
一個簡單的方法來檢查你的系統是否有殭屍程式遺留,看看 top
命令的標題行。
1 2 3 4 5 6 7 |
$ top top - 18:50:38 up 6 days, 6:36, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 171 total, 1 running, 167 sleeping, 0 stopped, 3 zombie `< ==` %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 2003388 total, 250840 free, 545832 used, 1206716 buff/cache KiB Swap: 9765884 total, 9765764 free, 120 used. 1156536 avail Mem |
可怕!上面顯示有三個殭屍程式。
at midnight
有時會在萬聖節這麼說,死者的靈魂從日落開始遊蕩直到午夜。Linux 可以通過 at midnight
命令跟蹤它們的離開。用於安排在下次到達指定時間時執行的作業,at
的作用類似於一次性的 cron。
1 2 3 4 5 6 |
$ at midnight warning: commands will be executed using /bin/sh at> echo 'the spirits of the dead have left' at> <EOT> job 3 at Thu Oct 31 00:00:00 2017 |
守護程式
Linux 系統也高度依賴守護程式 —— 在後臺執行的程式,並提供系統的許多功能。許多守護程式的名稱以 “d” 結尾。這個 “d” 代表守護程式daemon,表明這個程式一直執行並支援一些重要功能。有的會用單詞 “daemon” 。
1 2 3 4 5 6 7 |
$ ps -ef | grep sshd root 1142 1 0 Oct19 ? 00:00:00 /usr/sbin/sshd -D root 25342 1142 0 18:34 ? 00:00:00 sshd: shs [priv] $ ps -ef | grep daemon | grep -v grep message+ 790 1 0 Oct19 ? 00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation root 836 1 0 Oct19 ? 00:00:02 /usr/lib/accountsservice/accounts-daemon |