Я часто должен проверять, работает ли процесс, таким образом, я использую один из них:
ps aux | grep myprocess
ps -Fe | grep myprocess
top
pgrep myprocess (only shows the PID)
pkill myprocess (if I want to kill it)
Все вышеупомянутые команды работают хорошо, но, есть ли более короткая команда, чтобы сделать это? Любой ответ ценится, но выбранный должен быть...
Спасибо
Я думаю, что Вы просите, не существует итак, почему бы не записать немного функции удара или сценария, который делает точно, что Вы хотите?
function p {
ps aux | awk -v s="$@" 'NR>1 && $11~s'
}
Всуньте это Ваш ~/.bash_functions
(или везде, где назван ~/.bashrc
) и звоните source ~/.bashrc
для перезагрузки его и необходимо смочь работать:
$ p firefox
oli 5992 11.2 4.2 2856240 1044104 ? Sl Jun17 313:56 /usr/lib/firefox/firefox
Выражение возьмет regex, который делает его вдвойне удобным. И p
самостоятельно даст Вам полный список.
Используя псевдоним и grep для отфильтровывания его собственного терминального процесса:
alias qp="ps aux | grep -E -v \"tty.*grep|pts.*grep\" | grep -m1"
Если Вы хотите последний/новейший процесс:
alias qp="ps ax | tac | grep -E -v \"tty.*grep|pts.*grep\" | grep -m1"
Это дает идентификатор процесса при выполнении и не, не работая
процесс pidof
Другие ответы очень хороши и в основном оборачивают Ваше специальное решение ps | grep
в псевдоним оболочки или функцию. Нет ничего неправильно с тем подходом. Обратите внимание, однако, что это означает ps
будет извлекать информацию для всех рабочих процессов, и затем Вы имеете awk
или grep
отфильтровывание строк интереса.
Я предложил бы, чтобы было немного более эффективно использовать pgrep
получить список PIDs (поскольку Вы показываете в своем вопросе), и использование ps
для получения выходного формата, Вы хотите только для PIDs, подобранного pgrep
.
pg() {
pids=`pgrep -d, "$1"`
[ "$pids" ] && ps -f -p "$pids"
}
pg myprocess
Это показывает полное ps
список для подобранных имен процесса. Это функциональное определение может быть добавлено к ~/.bashrc
всегда определяться в Вашей интерактивной оболочке. Это может также быть изменено несколькими различными способами изменить выходной формат или соответствовать полным командным строкам вместо просто имени процесса.
pg() {
pids=`pgrep -d, "$1"`
[ "$pids" ] && ps up "$pids"
}
pg() {
pids=`pgrep -f -d, "$1"`
[ "$pids" ] && ps jp "$pids"
}
pg() {
pids=`pgrep -f -d, "$1"`
[ "$pids" ] && ps -l -p "$pids"
}
Отметьте -f
опция на pgrep
в последних двух примерах, которые будут соответствовать на полной командной строке. Можно изменить эти примеры для удовлетворения потребностям, при этом важная часть то, что p
или -p
опция дана со списком PIDs, найденного pgrep
.