英文原文:3 Useful Hacks Every Linux User Must Know
作者: Avishek Kumar
譯文源自:LCTT https://linux.cn/article-5635-1.html
譯者: goreliu
Linux世界充滿了樂趣邮府,我們越深入進(jìn)去,就會發(fā)現(xiàn)越多有趣的事物鲜侥。我們會努力給你提供一些小技巧币绩,讓你和其他人有所不同,下面就是我們準(zhǔn)備的3個小技巧赡模。
- 如何在不使用Cron的情況調(diào)度Linux下的任務(wù)
--
在Linux下,調(diào)度一個任務(wù)/命令稱之為Cron。當(dāng)我們需要調(diào)度一個任務(wù)時觅廓,我們會使用Cron,但你知道我們在不使用Cron的情況也可以調(diào)度一個在將來時間運(yùn)行的任務(wù)嗎涵但?你可以按照如下建議操作……
每5秒鐘運(yùn)行一個命令(date)然后將結(jié)果寫入到一個文件(data.txt)杈绸。為了實(shí)現(xiàn)這一點(diǎn)帖蔓,我們可以直接在命令提示符運(yùn)行如下單行腳本。
$ while true; do date >> date.txt ; sleep 5 ; done &
上述腳本的解釋:
-
while true
:讓腳本進(jìn)入一個條件總為真的循環(huán)中瞳脓,也就是制造一個死循環(huán)塑娇,將里邊的命令一遍遍地重復(fù)運(yùn)行。 -
do
:do
是while
語句中的關(guān)鍵字劫侧,它之后的命令會被執(zhí)行埋酬,在它后邊可以放置一個或一系列命令。 -
date >> date.txt
:運(yùn)行date
命令烧栋,并將其輸出寫入到data.txt文件中写妥。注意我們使用>>
,而不是>
审姓。 -
>>
:對文件(date.txt)進(jìn)行追加寫的操作珍特,這樣每次運(yùn)行命令后,輸出內(nèi)容會被追加到文件中魔吐。如果使用>
的話扎筒,則會一遍遍地覆蓋之前的內(nèi)容。 -
sleep 5
:讓腳本處于5秒睡眠狀態(tài)画畅,然后再運(yùn)行之后的命令砸琅。注意這里的時間單位只能用秒。也就是說如果你想讓命令每6分鐘運(yùn)行一次轴踱,你應(yīng)該使用sleep 360
症脂。 -
done
:while循環(huán)語句塊結(jié)束的標(biāo)記。 -
&
:將整個進(jìn)程放到后臺運(yùn)行淫僻。
類似地诱篷,我們可以這樣運(yùn)行任何腳本。下邊的例子是每100秒運(yùn)行一個名為script_name.sh
的腳本雳灵。
另外值得一提的是上面提到的腳本文件必須處于當(dāng)前目錄中棕所,否則需要使用完整路徑(/home/$USER/…/script_name.sh
)。實(shí)現(xiàn)如上功能的單行腳本如下:
$ while true; do /bin/sh script_name.sh ; sleep 100 ; done &
總結(jié):上述的單行腳本并不是Cron的替代品悯辙,因?yàn)镃ron工具支持眾多選項琳省,更加靈活,可定制性也更高躲撰。然而如果我們想運(yùn)行某些測試针贬,比如I/O評測,上述的單行腳本也管用拢蛋。
還可以參考:Linux 下 11 個定時調(diào)度任務(wù)例子
- 如何不使用clear命令清空終端的內(nèi)容
--
你如何清空終端的內(nèi)容桦他?你可能會認(rèn)為這是一個傻問題。好吧谆棱,大家都清楚可以使用clear
命令快压。如果養(yǎng)成使用ctrl + l
快捷鍵的習(xí)慣圆仔,我們會節(jié)省大量時間。
Ctrl + l
快捷鍵的效果和clear
命令一樣蔫劣。所以下一次你就可以使用ctrl + l
來清空終端的內(nèi)容了坪郭。
總結(jié):因?yàn)?code>ctrl + l是一個快捷鍵,我們不可以在腳本中使用脉幢。所以如果我們需要在腳本中清空屏幕內(nèi)容截粗,還是需要使用clear
命令。但我能想到的所有其他情況鸵隧,ctrl + l
都更加有效。
- 在其它目錄運(yùn)行一個命令意推,然后自動返回當(dāng)前工作目錄
--
這是一個很多人可能不知道的令人吃驚的技巧豆瘫。你可能想在其它目錄運(yùn)行任何一個命令,然后再回到當(dāng)前目錄菊值。要實(shí)現(xiàn)這樣的目的外驱,你只需要將命令放在一個圓括號里。
我們來看一個例子:
avi@deb:~$ (cd /home/avi/Downloads/)
示例輸出:
avi@deb:~
它首先會cd到Downloads目錄腻窒,然后又回到了之前的家目錄昵宇。也許你認(rèn)為里邊的命令根本沒有執(zhí)行,或者是出了某種錯誤儿子,因?yàn)閺拿钐崾痉床怀鋈魏巫兓甙ァW屛覀兒唵涡薷囊幌逻@個命令:
avi@deb:~$ (cd /home/avi/Downloads/ && ls -l)
示例輸出:
-rw-r----- 1 avi avi 54272 May 3 18:37 text1.txt
-rw-r----- 1 avi avi 54272 May 3 18:37 text2.txt
-rw-r----- 1 avi avi 54272 May 3 18:37 text3.txt
avi@deb:~$
在上述命令中,它首先進(jìn)入Downloads目錄柔逼,然后列出文件內(nèi)容蒋譬,最后又回到了當(dāng)前目錄。并且它證明了命令成功執(zhí)行了愉适。你可以在括號中包含任何命令犯助,執(zhí)行完都會順利返回到當(dāng)前目錄。
這就是全部內(nèi)容了维咸,如果你知道任何類似的Linux技巧剂买,你可以在文章下面的評論框中分享給我們,不要忘記將本文和朋友分享 :)