在 Linux 中启动进程有多种方式,根据使用场景不同,常见方法如下:
在终端直接执行命令,就是一个进程:
ls
sleep 10
特点:
&sleep 100 &
查看后台任务:
jobs
回到前台:
fg %1
nohupnohup sleep 1000 > out.log 2>&1 &
特点:
out.logdisownsleep 1000 &
disown
at now + 1 minute
at> sleep 100
at> Ctrl+D
查看任务:
atq
cron编辑定时任务:
crontab -e
示例(每分钟执行一次):
* * * * * /path/to/script.sh
创建服务文件:
sudo vim /etc/systemd/system/myproc.service
示例:
[Unit]
Description=My Process
[Service]
ExecStart=/usr/bin/sleep 1000
Restart=always
[Install]
WantedBy=multi-user.target
启动:
sudo systemctl daemon-reload
sudo systemctl start myproc
sudo systemctl enable myproc
查看状态:
systemctl status myproc
ps aux | grep sleep
top
htop
kill PID
kill -9 PID
| 方式 | 是否后台 | 是否脱离终端 | 适用场景 |
|---|---|---|---|
| 直接执行 | ❌ | ❌ | 临时命令 |
& |
✅ | ❌ | 临时后台 |
nohup + & |
✅ | ✅ | 长期运行 |
systemd |
✅ | ✅ | 服务程序 |
cron |
✅ | ✅ | 定时任务 |
如果你有具体场景(比如 启动 Java 程序 / Python 服务 / Docker / 开机自启 / 守护进程),可以告诉我,我可以给你更精确的示例。