Короче, запустить команды из рамок [] мне так и не удалось.
потому что при старте из шеллаПочему ps -A|grep ssh|wc -l прекрасно отрабатывает из командной строки, а из скрипта - НЕТ?
а когда ты не из шелла стартуешь - будь добр либо задать PATH, либо пиши полные пути к упоминаемым в скрипте файлам.root@kran-nb:~# set |grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PATH задал в начале скрипта? или оно само должно догадаться, где ps лежит, в каком каталоге?
потому что при старте из шелла
а когда ты не из шелла стартуешь - будь добр либо задать PATH, либо пиши полные пути к упоминаемым в скрипте файлам.
дык скорее всего запускают из шелла. Оно и работает :/.Странно... видимо авторы статей перед тем, как запостить - не проверяют работает ли оно вообще.
/bin/ps -C sshd -o pid= |wc -l так получше и правильнее.ps -A|grep apache2|wc -l
дучшее, что я нашел. Возвращает 1, если служба запущена, и 0, если нет
"все события взяты на просторах интернета, совпадение с реальным кодом - считать случайным"(С)/bin/ps -C sshd -o pid= |wc -l так получше и правильнее.
NB а `/bin/ps -C sshd -o pid= ` вообще тебе вернет pid , если он есть. И можно его сразу использовать, если надо (например, выведем в консоль PID от sshd:
/bin/echo `/bin/ps -C sshd -o pid= `
а то ps -A нагрепает тебе... в некоторых случаях и сам твой ps (там же в строке apache2 тоже есть)
он как что его вернёт? Как инт, или строку? Мой варианта `/bin/ps -C sshd -o pid= ` вообще тебе вернет pid , если он есть.
возвращает строку. Но это тоже pidOBJT=$(pgrep ssh )
echo result: $OBJT
if [ "$OBJT" != "" ]
then echo All_is_Done_$1
else echo Undone
service ssh restart
echo service will restarted
fi
как строку.он как что его вернёт? Как инт, или строку?
как строку.
удобно использовать в конструкциях для вычисления нужного ID процесса с одновременной подстановкой вычисленного
например,
/bin/kill `/bin/ps -C sshd -o pid= ` - вычислит pid у sshd , и закиляет процесс с оным pid
тоже выдаёт на выход стринг состоящий из pid.OBJT=$(pgrep ssh )
echo $OBJT
тогда ужВ чём разница pgrep и ps в данном случае
root@kran-nb:~# echo `pgrep sshd`
root@kran-nb:~# echo `pgrep -c sshd`
0
root@kran-nb:~# echo `pgrep -c sshd`
0
root@kran-nb:~# echo `pgrep -c ssh`
3
root@kran-nb:~# service sshd start
root@kran-nb:~# echo `pgrep -c ssh`
4
root@kran-nb:~# echo `pgrep -c sshd`
1
а в твоем варианте даст
root@kran-nb:~# echo `pgrep ssh`
947 6565 21225 21234 24440 24441 24455 24456 24473 24474
и че? сейчас у меня демон выключен, и херова туча исходящих консолей работает. Я к тому, что демон - sshd , клиент - ssh
иллюстрация небольшая