В моем примере я запускаю команду, выполнение которой занимает очень много времени (несколько часов).
Я действительно не помню, вводил ли я make или make -j4.
Конечно, я мог бы остановить это и нажать клавишу вверх или проверить историю, чтобы узнать это, но это остановит процесс, и я не хочу, чтобы это произошло (если он уже выполняет make -j4).
Есть ли способ узнать, какая команда выполняется без остановки процесса?
command-line
make
Даниэль Виано
источник
источник
pgrep -a make
make
вы можете остановить и перезапустить его, и он должен забрать, где он остановился.Ответы:
Если вы хотите видеть полную командную строку для каждого экземпляра
make
, запущенного на вашем компьютере, откройте новый терминал и попробуйте:pgrep
это программа, которая просматривает все процессы на вашем компьютере. В этом случае он ищет названные программыmake
. Опция-a
указываетpgrep
перечислять как идентификатор процесса, так и полную командную строку для каждого соответствующего процесса. (Без-a
этого он просто вернул бы идентификатор процесса.) Дополнительную информацию о многих опциях pgrep смотрите в разделеman pgrep
.источник
pgrep
будет выглядеть иначе, чем команда, введенная в командной строке.Когда окно терминала активно, вы можете приостановить (приостановить) процесс, нажав Ctrl+ Z. Затем вы можете перенести задание в фоновом режиме, набрав
bg
(теперь ваше задание будет продолжаться в фоновом режиме, и вы можете одновременно работать с командной строкой; это эквивалентно запуску задания с&
конца командной строки). Затем используйте стрелки курсора (вверх и вниз), чтобы увидеть, какую команду вы использовали. Если вы хотите (но это не обязательно), вы можете вывести свою работу на передний план, набравfg
.источник
for X in {1..1000} ; do sleep $X ; done
то цикл будет прерван, а остальные итерации не произойдут.jobs
, как показано в ответе @ ichabod) и затем возобновить ее черезfg
.Я делаю что-то вроде Стефана: ^ Z, чтобы приостановить работу, а затем бегу
jobs
. Если у вас запущено несколько процессов, вам, возможно, придется разобраться, какое задание было приостановлено, но это обычно дает командную строку. Затем бегите,fg
чтобы продолжить выполнение.источник
Хороший способ увидеть это динамически - это запустить top, и это говорит вам об общем состоянии системы и запущенных процессах в системе.
Выполнение ps ux показывает ваши процессы вместе с pid и другой информацией, вы можете использовать навык, чтобы убить некоторые из них, если хотите, справочная страница для этого - хороший ресурс, а выполнение навыка или kill -9 приводит к зависанию процессов. зависает в ожидании устройства и т. д. Вы также можете отправлять другие сигналы таким процессам, как -hup, перезапускать демоны и т. д.
Сверху приятно, так как он показывает размер процесса, затраченное время и текущие состояния процессора, а также память и своп.
Я часто делаю $ make> & make.out & и затем less или tail -f в файле журнала make.out. Поскольку сейчас make отключен как процесс от моего сеанса оболочки.
источник