У меня есть скрипт python, который использует команды SIGSTOP и .SIGCONT с os.kill для приостановки или возобновления процесса. Есть ли способ определить, находится ли связанный PID в приостановленном или возобновленном состоянии?Есть ли способ определить, приостановлен ли PID Linux или нет?
ответ
Вы можете найти информацию о процессе из каталога/proc (/proc/<PID>
). В частности, вы можете найти его запустить состояние с этим питона выражением:
open(os.path.join('/proc', str(pid), 'stat')).readline().split()[2]=='T'
EDIT: Это следующее выражение исправляет (предположительно редко) ошибка с оригиналом:
re.sub(r'\(.*\)', '()', open(os.path.join('/proc', str(pid), 'stat')).readline()).split()[2]=='T'
вызов ps и проверка значения STAT. D Бесперебойный сон (обычно IO) R Запуск или запуск (при запуске) S Прерывающий сон (ожидание завершения события) T Остановлен либо сигналом управления работой, либо потому, что он прослеживается. W пейджинг (недействителен с ядром 2.6.xx) X мертвый (никогда не должен быть замечен) Z Неисправный процесс («зомби»), завершенный, но не полученный его родителем.
Спасибо, я использовал ps axo fname, stat, pid, и это сработало так же, как вы сказали, я не знал, что значение STAT для этого было. – CobraBytez
Вы можете использовать psuti л:
>>> import psutil
>>> pid = 1243
>>> p = psutil.Process(pid)
>>> p.status
0
>>> str(p.status)
'running'
>>> p.status == psutil.STATUS_RUNNING
True
>>>
>>> p.suspend()
>>> p.status
3
>>> str(p.status)
'stopped'
>>> p.status == psutil.STATUS_STOPPED
True
>>>
>>> p.resume()
>>> str(p.status)
'running'
>>>
- 1. Есть ли способ определить, сжата ли страница или нет?
- 2. Быстрый способ определить, существует ли PID (Windows)?
- 3. Определите, приостановлен ли процесс
- 4. Как определить, приостановлен ли текущий процесс?
- 5. Есть ли способ определить, нет ли даты/времени?
- 6. Есть ли способ найти, имеет ли XCUIElement фокус или нет?
- 7. Есть ли способ найти pid процесса сокета?
- 8. есть ли способ узнать pid запущенной программы?
- 9. Есть ли способ определить, является ли drawerPanel открытым или закрытым?
- 10. Есть ли способ определить, отключена ли анимация
- 11. Есть ли способ определить, переопределена ли функция?
- 12. Есть ли способ определить, заблокирован ли объект?
- 13. Есть ли способ определить, произошло ли исключение?
- 14. Есть ли способ проверить, освобожден ли NSManagedObject или нет?
- 15. Есть ли способ проверить, был ли скаляр сканирован или нет?
- 16. Есть ли способ проверить, инициализирован ли пользовательский класс или нет?
- 17. Есть ли способ узнать, запущен ли медиапланер или нет?
- 18. Есть ли способ узнать, является ли метод статическим или нет?
- 19. Есть ли способ проверить, закончился ли токен oauth или нет?
- 20. есть ли способ проверить, включены ли IME-прогнозы или нет?
- 21. Есть ли способ определить количество бесплатной видеопамяти в Linux?
- 22. Как определить, есть ли у iPhone дисплей сетчатки или нет?
- 23. Есть ли способ определить, был ли файл выполнен или нет в C#?
- 24. Есть ли способ определить, является ли это тестом или нет (.NET)?
- 25. Есть ли способ определить, установлено ли приложение с Market или нет?
- 26. Есть ли способ для программы определить, была ли она вызвана MSBuild или нет?
- 27. Есть ли способ программно определить, включено ли устройство Android для IPv6 или нет?
- 28. Есть ли способ в Java, чтобы определить, вызван ли метод в статическом инициализаторе (или нет)?
- 29. Есть ли способ определить, работает ли функция в готовом документе или нет?
- 30. Есть ли способ определить, хранится ли apk на SD-карте или нет?
Не использовать os.path.join! ... подождите, это вопрос с чистым Linux. – janislaw
@janislaw - спасибо. –