0 23 * * * open -a Terminal
这很棒!但我想要的不仅是打开终端,还要在其中运行一个简单的命令.从在线查看,it looks as if cron commands can be chained with &&
:
0 23 * * * open -a Terminal && echo 'Hello,world!'
但是,此修改的cron作业只打开终端而不在那里运行第二个命令.有关如何让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 – 安排cron作业打开终端并按顺序运行命令全部内容,希望文章能够帮你解决linux – 安排cron作业打开终端并按顺序运行命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)