要让代码在服务器后台运行,有多种方法。在 Linux 系统中,最常见的有以下几种方式:
**1. 使用 `&` 符号:**
在命令后面添加 `&` 符号可以让程序在后台运行。例如:
```bash
python myscript.py &
```
但是这种方式存在一个问题:当您退出 shell 时,程序会被杀掉。
**2. 使用 `nohup` 命令:**
`nohup` 命令可以让程序脱离终端运行。这样,即使您退出了 shell,程序也不会被杀掉。
```bash
nohup python myscript.py > output.log &
```
在这里,`> output.log` 是将程序的输出重定向到 `output.log` 文件,`&` 符号是将程序放到后台运行。
**3. 使用 `screen` 或 `tmux`:**
`screen` 和 `tmux` 是 Linux 下的工具,可以让你创建多个 shell 窗口(会话),并在其中运行程序。这些窗口(会话)即使在你退出 shell 后,也会继续运行。
例如,使用 `screen` 可以这样:
```bash
screen -S mysession # 创建一个新的 screen 会话
python myscript.py # 在这个会话中运行程序
Ctrl+A, D # 按下 Ctrl+A,然后按下 D,以便脱离当前 screen 会话,但程序会继续运行
```
然后你可以随时重新连接到这个 screen 会话,查看程序的运行情况:
```bash
screen -r mysession
```
**4. 使用系统服务(如 Systemd 或 SysV init):**
这是一种更为复杂的方式,通常用于需要长期运行的程序,如服务器程序。您需要编写一个服务脚本,指定如何启动和停止您的程序,然后注册为系统服务。然后,您可以使用系统的服务管理命令(如 `systemctl start myservice`)来控制您的程序。
在使用第二种方法(`nohup`命令)时,程序的运行情况通常通过查看你指定的输出文件来进行。例如,如果你使用的命令是:
```bash
nohup python myscript.py > output.log &
```
那么你可以通过查看 `output.log` 文件来了解程序的运行情况:
```bash
cat output.log
```
`cat` 命令用于显示文件内容。
另一种查看 `output.log` 文件内容的方式是使用 `tail` 命令,它可以显示文件的最后几行。例如,`tail -f output.log` 命令会持续显示 `output.log` 文件的最新内容,直到你停止它。
```bash
tail -f output.log
```
`tail -f` 命令常常用于查看正在更新的日志文件。
这样就可以在程序运行的过程中,实时查看程序的输出,了解程序的运行情况。
如果你想要查看正在运行的后台进程,你可以使用ps
命令。例如,ps aux | grep python
可以列出所有包含python
关键字的进程。ps aux
命令显示的各列含义如下:
在 Linux 系统中,你可以使用 `kill` 命令来杀死(结束)某个进程。这个命令需要你知道你想要结束的进程的进程 ID(PID)。你可以通过使用 `ps` 命令来查找这个 PID。
例如,假设你想要结束一个名为 `myscript.py` 的 Python 程序,你可以首先使用 `ps` 命令来找到它的 PID:
```bash
ps aux | grep myscript.py
```
这个命令会列出所有包含 "myscript.py" 的进程。PID 是结果中的第二列。
然后,你可以使用 `kill` 命令来结束这个进程:
```bash
kill -9
```
在这个命令中,`
需要注意的是,只有进程的所有者或者 root 用户才能杀死一个进程。
你也可以使用 `pkill` 或者 `killall` 命令来结束一个或多个进程。例如,`pkill myscript.py` 会杀死所有名为 "myscript.py" 的进程。不过,这两个命令并不是所有系统都支持。