当前位置:网站首页 >  攻略

新手别慌!这几招搞定服务器后台进程守护小麻烦

时间:2026年06月04日 17:59:32 来源:易频IT社区

搞不定进程守护的痛,懂的都懂

你有没有过这种经历?熬夜写好的脚本跑起来,安心睡了个美容觉,结果第二天早上打开服务器一看——黑屏报错进程没了!之前攒的数据全断,老板追问还要陪笑脸解释,别提多扎心了。

说白了,服务器后台进程就像咱们托管给外卖员的重要快递,没人盯着没人管,万一外卖员中途接了别的大单、手机没电关机,货就送不到咱们手里。进程守护呢,就是给这个快递配个专属“保镖”,一旦快递员有问题,立刻找个替补顶上,或者把刚才的路再走一遍。

入门级神器,不用写代码也能凑合用

第一个:screen,最基础的“后台挂起袋”

很多人都以为挂后台就是直接在终端敲代码然后关窗口?大错特错!关了窗口终端会话就结束了,进程自然跟着死翘翘。

screen这个工具就像个透明挂袋,你把正在跑的进程塞进去,然后把挂袋“挂”在服务器上,哪怕你关了电脑、卸了远程工具,挂袋里的东西还好好的。

操作也超级简单:

  • 先安装,CentOS用yum install screen -y,Ubuntu用apt install screen -y
  • 创建挂袋:screen -S 你的挂袋名字(比如screen -S myscript)
  • 然后正常敲你的代码/启动命令就行
  • 要暂时离开挂袋,按Ctrl+A再按D,别直接关窗口!
  • 回来找挂袋:screen -ls看看有哪些,然后screen -r 挂袋名字重新进去

不过screen只能算“挂起”,不能算“真守护”——如果进程自己报错挂了,它不会自动重启,这时候就得用更高级的工具了。

第二个:nohup,低配版“永不掉线挂袋”

nohup比screen简单一点点,不需要创建会话,直接给命令加个前缀后缀就行。

前缀是nohup,后缀是&,还要加个输出日志文件的路径,不然报错信息看不到哦。

举个例子,如果你要跑一个Python脚本叫test.py:

``` nohup python3 test.py > test.log 2>&1 & ```

解释一下这段代码:nohup告诉进程“别管终端会话关没关,继续跑”;>test.log是把正常的输出写到test.log文件里;2>&1是把错误信息也一起写进去;最后的&是让进程在后台默默运行,别占用当前终端。

想看看进程还在不在?用ps aux | grep test.py搜一下就行。

但是nohup也有bug,同样不能自动重启进程,适合跑那种“大概率不会自己死”的简单任务。

专业级工具,重启监测日志全给你安排明白

第一个:systemd,Linux自带的“官方保镖”

systemd是大多数现代Linux发行版(比如CentOS7+、Ubuntu16+)自带的,不用额外安装,这就很省心。而且它功能超级全——自动重启、开机自启、资源限制、日志查看,全给你整得明明白白。

新手别慌!这几招搞定服务器后台进程守护小麻烦

配置起来也不算难,咱们一步一步来:

创建一个.service文件,放在/etc/systemd/system/目录下,文件名随便起,比如叫myscript.service:

``` sudo nano /etc/systemd/system/myscript.service ```

然后把下面的内容复制进去,改成你自己的配置:

``` [Unit] Description=我的Python后台脚本 After=network.target 等网络通了再启动,适合需要联网的脚本 [Service] Type=simple User=root 换成你自己的用户名,别一直用root不安全 WorkingDirectory=/home/你的用户名/脚本所在目录 脚本的绝对路径 ExecStart=/usr/bin/python3 /home/你的用户名/脚本所在目录/test.py Python的绝对路径+脚本的绝对路径 Restart=always 不管进程怎么死的,都自动重启,也可以改成on-failure(只有报错才重启) RestartSec=5 重启间隔5秒,别太频繁把服务器搞崩 [Install] WantedBy=multi-user.target 开机自启到多用户模式 ```

改完之后按Ctrl+O保存,Ctrl+X退出nano。

接下来启动服务:

  • 刷新配置文件:sudo systemctl daemon-reload
  • 启动服务:sudo systemctl start myscript.service
  • 设置开机自启:sudo systemctl enable myscript.service

想看看服务状态?用sudo systemctl status myscript.service,红的就是挂了,绿的就是正常运行。想看日志?用sudo journalctl -u myscript.service -f,-f是实时刷新,特别方便找bug。

第二个:supervisor,Python开发的“全能管家”

如果你用的是老版本的Linux(比如CentOS6),或者你不想用systemd,那supervisor绝对是你的菜。它是用Python写的,跨平台(不过Linux用得最多),配置比systemd稍微简单一丢丢,界面也更友好(虽然是命令行界面,但指令很直观)。

先安装,CentOS7+用yum install supervisor -y,Ubuntu16+用apt install supervisor -y,老版本或者找不到源的可以用pip安装:pip3 install supervisor

安装完之后生成配置文件:

``` echo_supervisord_conf > /etc/supervisord.conf ```

然后打开配置文件,在最后面加一段你的进程配置:

``` sudo nano /etc/supervisord.conf ```

拉到最底部,复制粘贴:

``` [program:myscript] command=/usr/bin/python3 /home/你的用户名/脚本所在目录/test.py Python和脚本的绝对路径 directory=/home/你的用户名/脚本所在目录 脚本的工作目录 user=root 换成自己的用户名 autostart=true 开机自动启动 autorestart=true 进程挂了自动重启 startsecs=10 启动10秒后没报错才算成功 redirect_stderr=true 把错误信息和正常输出放一起 stdout_logfile=/var/log/myscript.log 日志文件的路径 ```

保存退出之后启动supervisor:

  • 启动服务:sudo supervisord -c /etc/supervisord.conf
  • 进入supervisor管理界面:sudo supervisorctl
  • 启动你的进程:start myscript
  • 查看状态:status myscript

管理界面里还能stop、restart,不用每次都敲一串命令,特别顺手。

好了,今天的分享就到这里。新手先用screen或者nohup练手,熟悉了之后再换systemd或者supervisor,稳扎稳打才是王道。下次再也不用熬大夜盯后台啦!

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图