Для тех, кто просто хочет убить процесс и ждет он умирает, но не бесконечно :
Он ждет максимум 60 секунд на каждый тип сигнала.
Предупреждение: этот ответ никоим образом не связан с перехватом сигнала уничтожения и его отправкой.
# close_app_sub GREP_STATEMENT SIGNAL DURATION_SEC
# GREP_STATEMENT must not match itself!
close_app_sub() {
APP_PID=$(ps -x | grep "$1" | grep -oP '^\s*\K[0-9]+' --color=never)
if [ ! -z "$APP_PID" ]; then
echo "App is open. Trying to close app (SIGNAL $2). Max $3sec."
kill $2 "$APP_PID"
WAIT_LOOP=0
while ps -p "$APP_PID" > /dev/null 2>&1; do
sleep 1
WAIT_LOOP=$((WAIT_LOOP+1))
if [ "$WAIT_LOOP" = "$3" ]; then
break
fi
done
fi
APP_PID=$(ps -x | grep "$1" | grep -oP '^\s*\K[0-9]+' --color=never)
if [ -z "$APP_PID" ]; then return 0; else return "$APP_PID"; fi
}
close_app() {
close_app_sub "$1" "-HUP" "60"
close_app_sub "$1" "-TERM" "60"
close_app_sub "$1" "-SIGINT" "60"
close_app_sub "$1" "-KILL" "60"
return $?
}
close_app "[f]irefox"
Он выбирает приложение для уничтожения по имени или аргументам. Сохраните скобки для первой буквы имени приложения, чтобы избежать совпадения с самой grep.
С некоторыми изменениями вы можете напрямую использовать PID или более простой pidof имя_процесса
вместо оператора ps
.
Детали кода: Окончательная команда grep позволяет получить PID без конечных пробелов.
На ваш заголовок полностью отвечает Строка ничего не делать в скрипте bash::
или true
фактически эквивалентна pass
.
Однако в этих обстоятельствах я бы перевернул условие:
if ! grep something
then
code
fi
и
>>> for element in a:
... if element:
... print element
Это уродливый кладж, но если вы действительно хотите это сделать, вы можете использовать
usleep
Эта команда приостанавливает выполнение на 1 микросекунду.
Вы можете использовать его в функции:
function do_nothing {
usleep
}
, а затем используйте функцию, аналогичную Python pass
.
Это работает, но не очень приятно читать и нарушит логику скрипта, поэтому я не рекомендую его использовать. Гораздо лучшее решение - вместо этого переписать сценарий, как предложил @StephenKitt.