Есть ли способ обнаружить процесс с именем exec?

Лучший способ, ИМХО, состоит в том, чтобы заставить topиспользовать «пакетный» режим(-bфлаг ), который предназначен для использования с не -интерактивными вариантами использования, такими как передача в другую программу или в файл.

Итак, это

top -n1 -b | head

не покидает оболочку без курсора.

Насчет почему пропадает курсор ...

Так как topявляется интерактивной программой, она "возится" с терминалом, чтобы получить ввод, прокрутить содержимое и т.д., и она скрывает курсор.

При завершении он должен восстановить курсор и состояние дисплея, которое он обнаружил до вызова, и он делает это, отправляя один или несколько управляющих кодов самому терминалу.

При передаче команды через headэтот управляющий код не пройдет через(headпо умолчанию печатаются только первые 10 строк, а вывод как top, так и управляющих кодов для восстановления состояния терминала: всегда >10 строк ).

На самом деле, если вы дадите headдостаточно строк для печати, появится курсор!

Например,

top -n1 | head -n 100

оставляет курсор в моей системе.

2
03.01.2021, 01:09
1 ответ

в зависимости от вашей ОС вам, вероятно, следует использовать:

strace # on linux. you can attach to a pid (if you (as root?) have the rights to do so)
# you can also "follow its children" (using the appropriate options : `man strace` )

Аналоги (с другими возможностями )также существуют в других Unix-системах (и могут быть установлены и в вашей ОС):

dtrace # bsd originated, I believe. Should be present also on macos?

dtruss # on macos

truss # on aix

и др.

Для каждого :вам нужно найти правильные аргументы, необходимые для того, чтобы сделать то, что вы хотите. (например, обычно значения по умолчанию скрывают потерянные вещи и усекают аргументы системных вызовов только до первых нескольких символов и т. д. :все это можно изменить с помощью опций)

И посмотрите, выводит ли он что-то на stderr (возможно ). И оберните его в сценарий, который действует в соответствии с тем, что вам нужно. (например, :2>/some/tracefile #и иметь еще один конец скрипта -f /some/tracefile и действовать, когда он видит тот или иной системный вызов.)

1
18.03.2021, 22:38

Теги

Похожие вопросы