Я использую систему CentOS 6.
Я хотел бы знать pid команды curl, которую я выполняю. Обычно для получения pid процесса я использую ps
или pidof
или pgrep
или аналогичные. Но я обычно использую их для длительных процессов ... часто для обработки, которая на самом деле выполняется слишком долго, и я хочу их убить.
Это другая ситуация. В моем контексте curl выполняется очень быстро, потому что запросов и ответов мало. Но мне все еще нужно знать pid этого процесса. Есть ли способ выполнить быстро выполняющуюся команду, чтобы она сообщала вам, с каким pid она выполнялась? Или есть способ ретроспективно определить, какой был pid вашей предыдущей команды?
curl имеет собственную опцию --max-time , которая может установить верхнюю границу продолжительности. - максимальное время 60
ограничивается одной минутой.
ps
, чтобы найти PID фонового задания, ненадежно. Вы уже нашли условия гонки.
Если вам нужно управлять процессом каким-либо другим способом, curl на самом деле не сообщает PID. Однако любой достойный язык сценариев, такой как Python или Perl, имеет способы форкнуть подпроцесс и установить тайм-аут. Реализация не предоставлена, но недавний поток на curl-users Re: Поиск PID процесса curl предполагает, что это больше ответственность вызывающего сценария, чем самого curl.
Как правило, ваша оболочка записывает PID команды, что является обычным методом, который можно использовать, когда сама команда не предоставляет собственный способ регистрации PID (основного) процесса, и вы можете использовать что-то вроде:
curl $options &
curl_pid=$!