你问的“Linux 进程怎么写脚本”,我理解成如何用 Shell 脚本管理 / 控制 Linux 进程。下面分几种常见场景给你讲,都是实战中最常用的。
#!/bin/bash
# 启动一个进程
echo "启动进程..."
python3 myapp.py &
# 获取进程 PID
PID=$!
echo "进程已启动,PID=$PID"
&:后台运行$!:上一个后台进程的 PID#!/bin/bash
PROCESS="myapp.py"
if pgrep -f $PROCESS > /dev/null
then
echo "进程已经在运行"
else
echo "启动进程"
python3 $PROCESS &
fi
#!/bin/bash
PROCESS="myapp.py"
pkill -f $PROCESS
echo "进程已停止"
⚠️ 注意:pkill -f 是按命令行匹配,别写太短,避免误杀。
#!/bin/bash
PROCESS="myapp.py"
start() {
if pgrep -f $PROCESS > /dev/null
then
echo "已在运行"
else
nohup python3 $PROCESS > app.log 2>&1 &
echo "启动成功"
fi
}
stop() {
pkill -f $PROCESS
echo "已停止"
}
restart() {
stop
sleep 1
start
}
case "$1" in
start) start ;;
stop) stop ;;
restart) restart ;;
*) echo "用法: $0 {start|stop|restart}" ;;
esac
运行方式:
chmod +x proc.sh
./proc.sh start
如果你是想像服务一样管理进程,更规范的做法是写 systemd 服务:
sudo vim /etc/systemd/system/myapp.service
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/user/myapp.py
WorkingDirectory=/home/user
Restart=always
User=user
[Install]
WantedBy=multi-user.target
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp
nohup python3 myapp.py > app.log 2>&1 &
适合临时跑程序。
chmod +xkill -9 太暴力(尽量先 kill)如果你能说清楚你是想:
我可以给你针对你场景的完整脚本。