LINUX.ORG.RU

Скрипт на баше


0

1
#!/bin/bash
while true
do
	if [ "$(( $(date +"%s") - $(stat -c "%Y" tfile) ))" -gt "10" ]; then 
		echo "File don't touche longer then 10 sec!!!!" 
		declare -i x=`pidof php`;
		echo "$x";
		echo "Killing php script";
		kill -9 `pidof php`
		echo "Starting new php script";
		php script.php
		sleep 1
fi 
done

Собственно в цикле проверяется не захерел ли php скрипт и если файл не точится дольше 10 секунд то значит захерел и надо кильнуть его если висит и запустить новый. Но вот проблема код php script.php запускает php на исполнение и ждет пока тот завершится, а тот соответственно не завершится. Как сделать что бы скрипт запускал php и шел дальше?

> Как сделать что бы

Использовать Common Lisp и continuations, же.

anonymous ()

>      declare -i x=`pidof php`;

      echo «$x»;

      echo «Killing php script»;


      kill -9 `pidof php`


killall -v php

AITap ★★★★★ ()

kill -9 `pidof php`

Это убъёт все php-скрипты, а не только нужный. Надо как-то так:

#!/bin/sh
php script.php &
PID=$!
while true; do
	if [ "$(( $(date +"%s") - $(stat -c "%Y" tfile) ))" -gt "10" ]; then 
		echo "File don't touche longer then 10 sec!!!!" 
		echo "$PID"
		echo "Killing php script"
		kill -9 "$PID"
		echo "Starting new php script"
		php script.php &
		PID=$!
		sleep 1
	fi
done
gentoo_root ★★★★★ ()
Ответ на: комментарий от temp001

>А как найти айди конкретно того процесса еще я не знаю

Я же скрипт написал, прочитай его и узнаешь. В нём вызывается в фоне php, а переменной $PID присваивается значение переменной $!, которая хранит pid последнего запущенного фонового процесса.

gentoo_root ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.