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