MattB Asked: 2010-11-29 04:21:10 +0800 CST2010-11-29 04:21:10 +0800 CST 2010-11-29 04:21:10 +0800 CST 如何创建将在分离的屏幕内执行命令的 cron 命令? 772 我已经创建了一个屏幕,但我现在可以以某种方式执行将在分离的屏幕中运行命令的命令吗? 我什至不知道这是否可能,但如果是的话,这对你来说可能是简单易行的。 感谢你的付出。 cron gnu-screen 2 个回答 Voted smoser 2010-11-29T09:16:40+08:002010-11-29T09:16:40+08:00 注意:原始海报问'我如何在 cron 中做到这一点'。我已经更新了回复来解决这个问题。 获取“屏幕内”脚本并将其放入~/bin/: # 从 https://gist.github.com/1019125 下载“inscreen”脚本 wget -O ~/bin/inscreen https://gist.github.com/gists/1019125/download chmod 755 ~/bin/inscreen 创建一个名为“cronjobs”的屏幕会话: screen -d -m -S cronjobs 您必须安排在每次启动时发生这种情况,或者在下面的每个 crontab 条目中添加“--new-if-needed”。 使用 cron 在 cron 中添加条目inscreen,crontab 如下所示: PATH = /home/YOURNAME/bin:/usr/sbin:/usr/bin:/sbin:/bin * * * * * inscreen cronjobs -- sh -c 'echo $(date): start; 睡30;回声$(日期):结束;睡觉 4' 0 0 * * 0 屏幕内 cronjobs --keep-open --title 提醒 echo ==== 打电话给你的妈妈 ==== 0 0 * * 1 屏幕内 cronjobs --window 0 ls /tmp 以上将: 每分钟在“cronjobs”屏幕会话中打开一个新窗口,该窗口写入日期,休眠 30 秒然后退出。窗口将在退出时关闭。 每个星期天午夜打开一个标题为“提醒”的新窗口,上面写着“==== CALL YOUR MOM ====”,并要求您按 Enter 键关闭窗口。 每个星期一午夜在“cronjobs”会话的第一个窗口中运行“ls /tmp”。但请注意,不能同时运行其他“--window 0”作业。 poolie 2010-11-29T15:06:33+08:002010-11-29T15:06:33+08:00 smoser 的回答很好,虽然有点复杂。您也可以将其简化为 screen -d -m -S mysession -t label sleep 1m 需要注意的是,当进程退出时,屏幕将消失,您将无法看到它写入屏幕的内容。对于您的情况,这可能合适,也可能不合适。您可以通过在您的.screenrc defzombie ZZ 这意味着屏幕在进程退出后会一直挂起,直到您按下 Z。
注意:原始海报问'我如何在 cron 中做到这一点'。我已经更新了回复来解决这个问题。
获取“屏幕内”脚本并将其放入
~/bin/
:创建一个名为“cronjobs”的屏幕会话:
screen -d -m -S cronjobs
您必须安排在每次启动时发生这种情况,或者在下面的每个 crontab 条目中添加“--new-if-needed”。
使用 cron 在 cron 中添加条目
inscreen
,crontab 如下所示:以上将:
smoser 的回答很好,虽然有点复杂。您也可以将其简化为
需要注意的是,当进程退出时,屏幕将消失,您将无法看到它写入屏幕的内容。对于您的情况,这可能合适,也可能不合适。您可以通过在您的
.screenrc
这意味着屏幕在进程退出后会一直挂起,直到您按下 Z。