# Check if VPNC is already running, otherwise start it
if ( ps -ef | grep -v grep | grep -v vpnc_ondemand | grep -v less | grep vpnc > /dev/null ) ; then
echo "Shell script is already running then dont run this script and terminate the script".
exit
else
echo "run the other part of script "
Я хочу это, если этот процесс уже работает затем, целый сценарий просто завершается сам, и если не выполняет дальнейшую часть сценария.
Или этот код, который я уже написал, выполнит его, что я ищу
Если бы Вам нужен этот вид контрольного управления, я обратился бы к Выскочке. Создайте новый файл путем выполнения sudoedit /etc/init/vpnc.conf
и копия в чем-то как следующее:
start on (started networking)
respawn
exec /usr/sbin/vpnc --no-detach
И затем просто sudo start vpnc
запустить его в первый раз, когда (и это автоматически запустит после этого). Выскочка отследит процесс его PID. Никакой scripthackery не требуется.
Используя предложение @muru вот сценарий удара, которые делают то, что Вы хотите:
#!/usr/bin/env bash
process='vpnc$'
if pgrep $process > /dev/null; then # Here we are using the fact that if pgrep returns 0, the process is running
echo "Shell script is already running then dont run this script and terminate the script".
exit 1 # A number different of zero is good to point out that something went wrong
else
echo "run the other part of script "
fi
Но ответ от @Oli лучше подходит для того, что Вы подвергаете сомнению, похож на него, intented (управление программой на сервере).