我已经创建了一个屏幕,但是我现在可以以某种方式执行在分离的屏幕中运行命令的命令吗?
我甚至不知道这是否可能,但如果可能的话,这对你来说可能是一件简单而容易的事情。
感谢你的付出。
答案1
注意:原始发帖人询问“如何在 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 中添加条目
inscreen
,crontab 如下所示:PATH = /home/你的名称/bin:/usr/sbin:/usr/bin:/sbin:/bin * * * * * 屏幕内 cronjobs -- sh -c 'echo $(date): start; sleep 30; echo $(date): end; sleep 4' 0 0 * * 0 inscreen cronjobs --keep-open --title reminder echo ==== 给你妈妈打电话 ==== 0 0 * * 1 屏幕 cronjobs --window 0 ls /tmp
以上内容将:
- 每分钟在“cronjobs”屏幕会话中打开一个新窗口,写入日期,休眠 30 秒,然后退出。退出时窗口将关闭。
- 每个星期日午夜打开一个新窗口,标题为“提醒”,上面写着“====给你妈妈打电话=====”并要求您按回车键关闭窗口。
- 每周一午夜在“cronjobs”会话的第一个窗口中运行“ls /tmp”。但请注意,不能同时运行其他“--window 0”作业。
答案2
smoser 的回答虽然有点复杂,但还是不错。你也可以将其简化为
screen -d -m -S mysession -t label sleep 1m
但需要注意的是,当进程退出时,屏幕将消失,您将无法看到它在屏幕上写入的内容。这可能适合您的情况,也可能不适合。您可以通过在.screenrc
defzombie ZZ
这意味着屏幕在其进程退出后会一直停留直到您按下 Z 键。