【发布时间】:2016-01-09 20:21:29
【问题描述】:
我想启动一个脚本的 n 个线程,每个线程都有自己的进程 ID。
我目前通过cronjob 这样做:
* * * * * php /path/to/script.php >> /log/script.log 2>&1
* * * * * php /path/to/script.php >> /log/script.log 2>&1
* * * * * php /path/to/script.php >> /log/script.log 2>&1
这三个线程中的每一个都记录到同一个script.log,它将输出与其pid配对。
如果不从脚本复制/粘贴,我该如何做同样的事情?
以下是否会使用不同的pid(可从php 的getmypid() 访问)生成每一个?或者他们会共享同一个script-launcher.sh pid?
#!/bin/bash
# Let's call this `script-launcher.sh`
# Launch 3 threads at once with `script-launcher.sh 3`
N=${1-0}
for i in {1..$N}
do
php /path/to/script.php >> /log/script.log 2>&1
done
【问题讨论】:
-
所有正在运行的进程都有一个唯一的 pid。
-
我理解你的意思吗,使用上面的例子,
script-launcher.sh 100会产生 100 个script.php进程,每个进程都有自己的pid? -
我认为这可以帮助您stackoverflow.com/questions/19543139/… 您想为您的脚本启动更多并行进程,对吗?当你启动一个进程时,他会自动获取一个 pid。
-
@Ryan 绝对。如果每个正在运行的进程都没有唯一的进程,那么 pid 将毫无意义。进程可以共享诸如父 pid、可能的文件描述符、其他资源之类的东西。但是 pid 是唯一且不变的。
标签: php multithreading bash shell