【发布时间】:2016-12-21 05:23:51
【问题描述】:
我编写了一个 C 程序并在我的 linux 计算机上对其进行了测试。
我现在已将它上传到我的服务器,并希望它作为后台进程一直在那里运行。
如何启动一个在我关闭 putty 后会继续运行的程序?
感谢您的帮助!
【问题讨论】:
标签: linux server background-process
我编写了一个 C 程序并在我的 linux 计算机上对其进行了测试。
我现在已将它上传到我的服务器,并希望它作为后台进程一直在那里运行。
如何启动一个在我关闭 putty 后会继续运行的程序?
感谢您的帮助!
【问题讨论】:
标签: linux server background-process
您可以通过在调用中添加 & 来让程序继续运行
所以当你之前在 SSH 中像这样执行你的代码时:
./mycode
你会喜欢的:
./mycode &
【讨论】:
如果你想在后台运行你的程序,你必须在命令中添加“&”字符。
./program &
但是进程会关联到当前的 tty。如果您关闭当前的 tty(在您的情况下是 SSH 会话),则 SIGHUP 信号将发送到与 tty 关联的所有进程,导致它们完成。您可以使用 ps 命令查看与一个进程关联的 tty。
disown 命令可用于标记作业,以便在父 shell 接收到 SIGHUP 信号时不会向它们发送信号。在关闭当前 tty 之前,您可以编写:
disown %jobID
当您在后台运行程序时,您可以看到括在括号中的 jobID。您还可以使用 jobs 命令查看 jobID。
您可以直接运行命令,这样就不会向他发送 SIGHUP 信号。为此,您可以使用 nohup 命令。
nohup ./program &
避免以 SIGHUP 信号结束程序的另一种方法是在程序中捕获此信号。在 C 程序中,您可以使用 signal.h 中的 signal 函数来完成此操作
但如果你想将程序作为守护进程或服务器运行,最好编写一个 Systemd 服务或 System V 初始化脚本。
【讨论】:
在执行程序的过程中,如果您想在后台运行程序。
先按ctrl + z,然后输入bg。
【讨论】: