我有一个名为run.sh的bash脚本,它启动两个python脚本meter_1.py和meter_2.py
#!/bin/sh
./meter_1.py &
./meter_2.py &当脚本运行时,我使用以下命令搜索脚本的PID
ps -aux | grep python输出为
openhab+ 9328 84.0 1.6 25320 16580 pts/0 R 22:23 0:04 python ./meter_1.py
openhab+ 9329 84.6 1.6 25320 16596 pts/0 R 22:23 0:04 python ./meter_2.py使用pgrep命令可以获得PID
>pgrep python
9328
9329 但是,我可以运行多个python脚本,并且我希望通过它正在运行的脚本来获取进程ID名称,而不是基于它是否是python。
例如:
>pgrep python" "./meter_1.py
9328 在pgrep中有这样的功能吗?下面的代码看起来还不错,不过如果能拿回进程ID就更好了。
>ps -aux | grep python" "./meter_1.py
openhab+ 9328 84.0 1.6 25320 16580 pts/0 R 22:23 0:04 python ./meter_1.py发布于 2020-04-27 05:47:50
在ba(sh)中,您可以使用$!获得最后启动的进程的PID
因此在您的run.sh脚本中,您可以简单地使用:
#!/bin/sh
./meter_1.py &
echo PID of process1: $!
./meter_2.py &
echo PID of process2: $!发布于 2020-04-27 05:54:35
如果你可以控制这个过程,就像你是在脚本中启动这个过程的那个人一样,来扩展已经发布的内容。
#!/bin/sh
./meter_1.py & meter_1_py_pid=$!
./meter_2.py & meter_2_py_pid=$!pids位于变量$meter__1_py_pid和$meter__2_py_pid中。您可以对pids执行任何操作,检查它是否正在运行,终止它,等等。
https://stackoverflow.com/questions/61448434
复制相似问题