Вы можете запустить его с помощью команды timeout
,
timeout - run a command with a time limit
Synopsis
timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...
timeout [OPTION]
Description
Start COMMAND, and kill it if still running after NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
PS. Если процесс синхронизации занимает слишком много времени, вы можете рассмотреть другой подход к синхронизации данных, возможно, заблокировать репликацию.
$ pgrep -x ./hello_world $ echo $? 1
Причина, по которой первое выражение выполняет Несоответствие вызвано тем, что вы просите pgrep
искать точное совпадение имени процесса (в вашем примере имя процесса - hello_world
), но вы указываете ./ hello_world
в качестве строки поиска.
$ pgrep -x hello_world $ echo $? 1
Я понятия не имею, почему второй поиск не работает для вас. Он работает на Ubuntu 14.04, поэтому либо в вашем сообщении есть какая-то ошибка, либо ошибка в новой версии:
$ ./dd &
[1] 6377
$ pgrep -x dd
6377
Похоже, что реализация pgrep -x
и сопоставление регулярных выражений в procps нарушена:
$ /bin/sleep 9& pgrep -x 'sleep'
[1] 8472
8472
$ /bin/sleep 9& pgrep '^sleep$'
[2] 8485
8472
8485
$
Судя по моему чтению справочной страницы, оба они должны возвращать значение null.
Вместо этого рассмотрим pidof
.
Существует досадный случай, когда нужно исключить скрипт-оболочку, в данном случае называемыйsleep
:
#!//bin////bash
echo "Script PID: $$"
/bin/sleep 1&
pgrep -ax sleep
Вывод:
Script PID: 12973
12973 //bin////bash./sleep
12974 /bin/sleep 1