我在 CentOS 6 系统上。
我想知道我正在运行的 curl 命令的 pid。通常是为了获取我使用的进程的 pidps
或pidof
或pgrep
或类似的东西。但我通常将它们用于长时间运行的进程...通常用于运行时间过长的进程,而我想终止它们。
这种情况有所不同。在我的环境中,curl 运行得非常快,因为请求和响应都很小。但我仍然需要知道该进程的 pid。有没有办法执行一个快速运行的命令,以便它告诉你它运行的 pid 是什么?或者有没有办法回顾性地告诉你上一个命令的 pid 是什么?
答案1
curl 有自己的 --max-time 选项可以设置所需时间的上限。 --max-time 60
将限制为一分钟。
ps
查找后台作业的 PID 是不可靠的。您已经发现了竞争条件。
如果您必须以其他方式管理进程,curl 不会真正报告 PID。但是,任何像 Python 或 Perl 这样的像样的脚本语言都有方法可以派生子进程并设置超时。没有提供实现,但 curl-users 上最近的一个帖子回复:查找 curl 进程的 PID这表明这更多的是调用脚本的责任而不是 curl 本身的责任。
答案2
一般来说,你的 shell 会记录一个命令的 PID,这是当命令本身不提供本机方式来记录(主)进程 PID 时使用的通常方法,你可以使用类似以下方法:
curl $options &
curl_pid=$!