温馨提示×

linux进程怎么写脚本

小樊
49
2026-10-09 11:15:19
栏目: 智能运维

你问的“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,推荐)

如果你是想像服务一样管理进程,更规范的做法是写 systemd 服务:

1️⃣ 创建服务文件

sudo vim /etc/systemd/system/myapp.service

2️⃣ 内容示例

[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

3️⃣ 常用命令

sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp

六、守护进程(简单方式)

nohup python3 myapp.py > app.log 2>&1 &

适合临时跑程序。


七、常见错误提醒 ❗

  • 忘记 chmod +x
  • 用 kill -9 太暴力(尽量先 kill)
  • 脚本里路径写相对路径(建议绝对路径)
  • 日志不重定向,进程退出找不到原因

如果你能说清楚你是想:

  • ✅ 写脚本启动进程
  • ✅ 监控进程是否存活
  • ✅ 写守护进程
  • ✅ 写 Linux 服务

我可以给你针对你场景的完整脚本。

0 踩