Tag: 后台进程

启动一个屏幕会话并运行脚本而不附加到它?

我正在尝试编写一个脚本: 开始新的screen会话 在新的屏幕会话中运行一些程序或脚本 从屏幕会话中分离,而步骤2中的程序可能仍然在那里运行。 如果步骤2中的程序立即或稍后结束,则屏幕会话应保持运行(分离)。 我一直在尝试各种组合与screen -X program或screen -S somename后跟program然后是screen -D ,结合-d或-m选项,我在相关的问题和答案中找到但没有任何作用。 我能得到的最接近的是: screen -S MySessionName -d -m myprogram 这将在背景中启动一个新的屏幕会话,运行myprogram 。 除了myprogram完成(有时立即)之外,屏幕会话终止,而我想让它继续运行。

我可以和应用程序一起运行shell脚本吗?

我写了一个小脚本,在我关闭它后自动删除Chrome缓存: #!/bin/bash while true; do if [[ $(pgrep -l chrome) ]]; then sleep 20 else rm -rf ~/.cache/google-chrome/Default/Cache/* rm -rf ~/.cache/google-chrome/Default/”Media Cache”/* notify-send “CCD” “Cache deleted!” break fi done 现在我不希望每次都手动运行此脚本,我希望它在启动Chrome时自动在后台运行。 我尝试使用Ubuntu Tweak编辑Chrome快速列表: 但正如我所料,它没有用。 那么,有没有其他方法可以做到这一点?

“&disown”和“nohup &disown”之间的差异

这是我对& , disown和nohup的使用的理解: :在终端的当前bash实例中, 在前台运行进程(即进程被列为bash前台作业, stdin , stdout和stderr仍然绑定到终端 ); 不能免于挂断 ; & : 在后台的终端当前bash实例中运行进程(即进程被列为bash后台作业, stdin , stdout和stderr仍然绑定到终端 ); 不能免于挂断 ; & disown : 在后台运行终端当前bash实例中的进程,但该进程与bash的jobs列表分离 (即该进程未列为bash前台/后台作业和stdin , stdout和stderr仍然绑定到终端 ); 免于挂断 ; nohup & disown : 在后台运行终端当前bash实例中的进程,但是该进程与bash的jobs列表分离 (即该进程未被列为bash前台/后台作业和stdin , stdout和stderr还没有 绑定到终端 ); 免于挂断 ; 因此,除了nohup & disown阻塞stdin并默认将stdout和stderr重定向到nohup.out ,在我看来它可以被认为完全等同于 & disown 。 以上都是正确的吗? 有什么误解吗?