我有一个Shell命令,想在后台运行,我读到可以在命令后面加上&
使其作为后台进程运行。但我需要一些额外的功能,想知道如何实现:
- 我希望命令每次系统重新启动时都能自动以后台进程方式启动并运行。
- 我希望能够像使用
service apache2 start
命令一样随时启动和停止它。
该怎么做呢?是否有工具可以将其作为服务运行?
我对此有点困惑。
谢谢
我有一个Shell命令,想在后台运行,我读到可以在命令后面加上&
使其作为后台进程运行。但我需要一些额外的功能,想知道如何实现:
service apache2 start
命令一样随时启动和停止它。该怎么做呢?是否有工具可以将其作为服务运行?
我对此有点困惑。
谢谢
Unix系统可以同时处理您需要的任意数量的进程(如果您在GUI中,请打开新的shell窗口),因此仅在必须在运行应用程序或持续运行的进程后继续使用当前shell窗口进行其他操作时,才需要在后台运行进程。
要在后台模式下运行名为command的命令,您可以使用:
command &
这是一个特殊字符,一旦进程启动,它会将您返回到命令提示符。还有其他执行其他操作的特殊字符,更多信息请在这里查看。
command
运行,请使用nohup command&
。 - rem看看daemon命令,它可以将任意进程转换为守护进程。这将使您的脚本作为守护进程运行,而无需额外的工作。下一步是自动在引导时调用它。要知道正确的方法,您需要提供您的操作系统(或者对于Linux,您的发行版)。
根据这篇文章:
http://felixmilea.com/2014/12/running-bash-commands-background-properly/
...另一种好的方法是使用screen
,例如:
screen -d -m -s "my session name" <command to run>
来自screen手册:
-d -m
以分离模式启动screen。这将创建一个新会话,但不会附加到它上面。这对于系统启动脚本非常有用。
也就是说,您可以关闭终端,进程仍将继续运行(与&
不同)
使用screen
您还可以稍后重新附加到会话中
felixmilea.com
域名已不存在,该链接随机重定向到钓鱼页面。 - raratiru在将输出重定向到 /dev/null 时使用 nohup 命令
nohup 命令 &>/dev/null &
如果你想要使用bash进行高级作业控制,你应该了解一下jobs
、bg
和fg
命令。
然而,看起来你并不是真正想在后台运行命令。你想要做的是在启动时启动命令。这种方法因你所用的Unix系统而异,但可以尝试查看rc
文件系列(例如Ubuntu上的/etc/rc.local
)。它们包含将在init脚本之后执行的脚本。