linux按顺序运行命令,linux – 安排cron作业打开终端并按顺序运行命令
以下答案[在分隔符之后]假定您要在終端的[內(nèi)部]內(nèi)運(yùn)行第二個(gè)命令.否則你只需要交換cronjob上的命令(因?yàn)槟壳?就像你擁有它一樣,echo只會在終端退出后執(zhí)行),例如:
0 23 * * * echo 'Hello, world!' && open -a Terminal
現(xiàn)在,假設(shè)您要在新生成的終端中運(yùn)行命令:
我不知道終端應(yīng)用程序(來自/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal)接受[ie,解釋]任何命令行參數(shù),也不會讀取[標(biāo)準(zhǔn)輸出重定向到]標(biāo)準(zhǔn)輸入的任何內(nèi)容.
你正在做什么打開-a Terminal&&回聲’你好,世界!’基本上是調(diào)用終端應(yīng)用程序,[如果成功]打印’Hello,world!’在調(diào)用上一個(gè)命令(終端)的同一個(gè)shell上.這類似于在同一個(gè)shell中執(zhí)行兩個(gè)單獨(dú)的命令,但只在第一個(gè)成功時(shí)才執(zhí)行最新的命令.
如果你想在每次為當(dāng)前用戶加載bash(當(dāng)前是默認(rèn)的osx shell)時(shí)執(zhí)行一個(gè)特定的命令(比如echo’Hello,world!’)(就像每次用戶打開終端一樣),你可以將該命令添加到?/ .bash_profile.例如:
echo "echo 'Hello, world!'" >> ~/.bash_profile
現(xiàn)在當(dāng)你打開一個(gè)終端時(shí),命令`echo’Hello,world!’“將被執(zhí)行.
由于最新版本的MacOSX默認(rèn)情況下不包含任何用戶的?/ .bash_profile,因此您可以利用此功能并將crontab更改為:
0 23 * * * echo "echo 'Hello, world!' > ~/.bash_profile" && open -a Terminal
這基本上將在每次執(zhí)行此crontab條目時(shí)替換?/ .bash_profile的內(nèi)容并打開終端.
這樣做的缺點(diǎn)是無論你放在?/ .bash_profile中,都將為每個(gè)打開的終端執(zhí)行,無論是來自crontab的終端,還是任何其他用戶可以在任何給定時(shí)間打開的終端.
要解決此問題,您還可以通過在echo’Hello,world!’之后放置一個(gè)尾隨的rm -f~ / .bash_profile命令來從中刪除?/ .bash_profile文件:
0 23 * * * echo "echo 'Hello, world!'; rm -f ~/.bash_profile" > ~/.bash_profile" && open -a Terminal
這將導(dǎo)致當(dāng)終端打開并調(diào)用bash時(shí),將執(zhí)行所有?/ .bash_profile命令,包括尾隨rm -f~ / .bash_profile,因此下一次調(diào)用Terminal不會再次觸發(fā)你的命令,因?yàn)?/ .bash_profile不再存在.
旁注:如果出于某種原因,您已經(jīng)有了一個(gè)?/ .bash_profile文件,而不是替換它的全部內(nèi)容并在之后刪除它,您可以備份原始文件,附加您的命令[包括恢復(fù)原始文件的命令]并打開終端.但我認(rèn)為這不是你的情況(無論如何,如果是的話,我可以用細(xì)節(jié)擴(kuò)展這個(gè)答案).
總結(jié)
以上是生活随笔為你收集整理的linux按顺序运行命令,linux – 安排cron作业打开终端并按顺序运行命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件给另一用户名和密码错误,l
- 下一篇: router linux命令,route