如何在后台启动服务器上的 C 程序到 运行
How to start C Program on Server to run in background
我编写了一个 C 程序并在我的 linux 计算机上进行了测试。
我现在已经将它上传到我的服务器,并希望它一直 运行 在那里作为后台进度。
关闭 putty 后,如何启动一个会继续 运行 的程序?
感谢您的帮助!
您可以通过在通话中添加 & 来退出程序 运行
因此,当您之前在 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
.
我编写了一个 C 程序并在我的 linux 计算机上进行了测试。
我现在已经将它上传到我的服务器,并希望它一直 运行 在那里作为后台进度。
关闭 putty 后,如何启动一个会继续 运行 的程序?
感谢您的帮助!
您可以通过在通话中添加 & 来退出程序 运行
因此,当您之前在 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
.