Почему использование awk? sed
лучше в этом:
sed -ne 's/.*\(http[^"]*\).*/\1/p' < foo.js
Используйте crontab задание для вызова сценария.
crontab -e
Добавьте следующую строку
* * * * * /path/to/your/script
Этот wil выполняет Ваш сценарий каждую минуту. Можно проверить здесь, как настроить в течение другого времени выполнения. Страница справочника Crontab
Извините, что я пропустил требование для выполнения каждых 5 secs. Но как Jonnhy, упомянутый в комментариях, у Вас может быть cronjob, проверяющий, работает ли сценарий или нет.
Сценарий для crontab:
#!/usr/bin/bash
ps -ef|grep -v grep |grep script_name
if [ $? != 0 ]; then
path/to/script/script_name
fi
В Вашем сценарии:
#!/usr/bin/bash
while true; do
#perform the test
sleep 5
done
Или если Вы используете Linux, который все еще основан на init сценариях, Вы можете, возможно, запись в/etc/inittab
10:35:respawn:/path/ro/your/script
Хотя я не действительно уверен - ли это лучшая практика, чтобы иметь это в inittab.
Если Ваша система уже с systemd, существует также способ выполнить это, но у меня нет опыта с ним для помещения его здесь.
Вместо того, чтобы использовать сценарий с бесконечным циклом, используйте сценарий, который выполняет задачу однажды, но сначала спит в течение 5 секунд, затем называет себя в фоновом режиме:
sleep 5
$0 &
# do whatever
Это предполагает, что сценарий находится в $PATH, так как он вызывается только с именем ($0
).
Если сценарий умирает / уничтоженный во время, "делают любой", следующее повторение будет все еще работать.
Если у Вас есть полномочия пользователя root, можно поместить сценарий или в/etc/inittab или в/etc/init/script.conf, в зависимости от которого система использует. Используйте записи для/sbin/getty как пример процесса, который всегда перезапускается, когда он умирает.
/etc/init/script.conf
не эквивалентно и не будет работать в способе, которым Вы предлагаете.
– goldilocks
24.10.2013, 21:40
Пока процесс не умирает через SIGKILL, можно использовать trap
, например:
#!/bin/bash
trap "" SIGHUP SIGINT SIGTERM
count=0
while ((1)); do
echo $count
sleep 2;
count=$(($count+1));
done
Вы не можете Ctrl-C (SIGTERM) это. Если Вы хотите, чтобы это остановилось, необходимо использовать kill -9 [pid]
.
trap
в Bash.
– Arcege
25.10.2013, 04:31
trap
akill -9
так вытаскивание сценария называет из таблицы процессов, когда его не нужным является в значительной степени единственный другой способ минимизировать риск, что кто-то будет когда-либо пытаться уничтожить его (который является тем, что OP спрашивает о). списки – Bratchley 24.10.2013, 19:01man 5 crontab
или путем навигации здесь. – Timothy Martin 24.10.2013, 21:25