写个 Python 脚本爬点数据,刚关掉终端窗口,任务就断了?用 curl 下个大文件,切出去回微信,一刷新发现下载早停了?很多人以为关掉终端等于“杀掉所有事”,其实只要加个小符号,任务就能安安稳稳在后台跑,你该干啥干啥。
最简单的后台启动法:&
在命令末尾加个 &,就能让它扔进后台执行:
python3 monitor.py &这样终端立刻还给你,可以继续敲别的命令。但注意:它只是“后台运行”,没脱离终端控制——如果终端被强制关闭(比如 SSH 断连或直接关窗),这个任务大概率也会跟着消失。
真正靠谱的后台:nohup + &
想让任务彻底“自立门户”,不怕关终端、不怕断 SSH,用 nohup 就对了:
nohup python3 backup.sh > backup.log 2>&1 &这行命令的意思是:nohup 让程序忽略挂起信号;> backup.log 把正常输出存进日志;2>&1 把报错也一起记进去;最后的 & 才真正放它去后台。关掉窗口后,脚本照常运行,日志还能随时翻看。
更灵活的方案:screen 或 tmux
如果你需要中途回去看看进度、敲几行调试命令,nohup 就不够用了。这时候 screen 是老手常用的选择:
screen -S downloader
curl -O https://example.com/bigfile.zip
Ctrl+A, 然后按 D(detach)任务还在跑,你已回到主终端。想回去?输入 screen -r downloader 就能接上。Mac 或新 Linux 用户更爱用 tmux,操作类似,体验更现代些。
顺手查一查:哪些任务还在跑?
忘了自己启过啥后台任务?别翻历史记录,直接看:
jobs # 查看当前终端启动的后台任务(仅限未脱离的)
ps aux | grep python3 # 查所有含 python3 的进程
pgrep -f "monitor.py" # 快速定位某脚本是否还在活蹦乱跳有时候任务跑太久卡住了,用 kill %1(对应 jobs 编号)或 kill -9 [PID] 干净收尾就行,不用重启系统。
终端不是牢笼,而是你调度任务的指挥台。学会这几招,下载、同步、监听、编译……统统丢后台,桌面清爽,心里踏实。