我有一个简单的脚本来检查要下载的文件。问题是一段时间后我可以看到他多次运行,在不同的时间启动,即使我只启动了一次:
ps aux | grep _db
root 2804 0.0 0.0 11288 1756 ? S 00:26 0:06 /bin/bash /script/downloader/downloader_db.sh
root 8606 0.0 0.0 11284 872 ? S 12:18 0:00 /bin/bash /script/downloader/downloader_db.sh
root 8649 0.0 0.0 11168 680 pts/0 S 12:18 0:00 /bin/bash /script/downloader/downloader_db.sh
root 11552 0.0 0.0 11272 860 ? S 11:25 0:00 /bin/bash /script/downloader/downloader_db.sh
root 11562 0.0 0.0 11152 672 pts/0 S 11:25 0:00 /bin/bash /script/downloader/downloader_db.sh
root 39150 0.0 0.0 11172 1644 pts/0 S 10:51 0:01 /bin/bash /script/downloader/downloader_db.sh
Run Code Online (Sandbox Code Playgroud)
我从 rc.local 用 nohup 启动脚本:
nohup /script/downloader/downloader_db.sh &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
剧本:
#!/bin/bash
while true; do
while IFS=$'\t' read -a line; do
...
sleep 2
done < <(mysql --batch -u${user} -p${password} ${database} -e "${query}" -h ${host})
sleep 10
done
Run Code Online (Sandbox Code Playgroud)
while循环中有什么东西在后台运行吗?可以想象,它与父进程同名。
您可以通过运行ps wafux和查看进程树来检查某些进程是否为子进程。
如果它们彼此不“相关”,则您很可能只是多次运行脚本,而其他进程尚未完成。