在 Debian(以及大多数 Linux 系统)中,“定时结束进程”通常有几种常见做法,取决于你是一次性的定时结束还是周期性/条件触发结束。
下面按使用场景给你总结几种常用方法。
timeout 30s command
commands / m / h示例:
timeout 10m ./my_program
timeout 60s kill -TERM 12345
或:
timeout 60s kill -9 12345
sudo apt install at
echo "kill -9 12345" | at 23:30
或:
echo "pkill my_process" | at now + 1 hour
crontab -e
添加:
0 2 * * * pkill -f my_process
或:
0 2 * * * kill -9 $(pgrep my_process)
⚠ 注意:
pkill 按名字kill 需要 PID# /etc/systemd/system/kill-myapp.service
[Unit]
Description=Kill myapp
[Service]
Type=oneshot
ExecStart=/usr/bin/pkill -9 myapp
# /etc/systemd/system/kill-myapp.timer
[Unit]
Description=Daily kill myapp
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
启用:
sudo systemctl enable --now kill-myapp.timer
ps -eo pid,etimes,comm | awk '$2>3600 && $3=="myapp"{print $1}' | xargs kill -9
可放入 cron 每分钟检查一次。
| 命令 | 作用 |
|---|---|
kill PID |
正常结束 |
kill -9 PID |
强制结束 |
pkill name |
按名杀 |
pgrep name |
查 PID |
timeout |
限时运行 |
timeoutatcronsystemd timer如果你能告诉我:
我可以给你更精确的命令。