Назад | Перейти на главную страницу

Как узнать о быстром запуске процесса

Я использую систему CentOS 6.

Я хотел бы знать идентификатор выполняемой мной команды curl. Обычно, чтобы получить pid процесса, я использую ps или pidof или pgrep или т.п. Но я обычно использую их для длительных процессов ... часто для обработки, выполняющейся слишком долго, и я хочу их убить.

Это другая ситуация. В моем контексте curl выполняется очень быстро, потому что запросов и ответов мало. Но мне все еще нужно знать pid этого процесса. Есть ли способ выполнить быстро выполняющуюся команду, чтобы она сообщала вам, с каким pid она выполнялась? Или есть способ ретроспективно сказать, какой был pid вашей предыдущей команды?

curl имеет собственную опцию --max-time который может установить верхнюю границу продолжительности. --max-time 60 ограничусь минутой.


ps найти PID фоновой работы ненадежно. Вы уже нашли условия гонки.

Если вам нужно управлять процессом каким-либо другим способом, curl на самом деле не сообщает PID. Однако любой достойный язык сценариев, такой как Python или Perl, имеет способы форкнуть подпроцесс и установить тайм-аут. Реализация не предусмотрена, но недавний поток на curl-users Re: Нахождение PID процесса curl предполагает, что это больше ответственность вызывающего сценария, чем самого curl.

Как правило, ваша оболочка записывает PID команды, что является обычным методом, который можно использовать, когда сама команда не обеспечивает собственный способ регистрации (основного) PID процесса, и вы можете использовать что-то вроде:

 curl $options & 
 curl_pid=$!