#!/bin/bash
#I am just like a system daemon...
#I do not need nohup for work, and I should not be called from cron.
#My name is main_safe
#I will become a separeted process even if my father dies...
#i will check if main is still alive, and if dies i will restart it
#nohup is not needed inside shell script.
#IMPORTANT: to die is very different from to freeze
main_safe(){
trap "" HUP
while sleep 120; do
main&
wait
done
}
#My name is main I like to keep restarting php master.php
#everytime it go away... remove wait and I will keep starting master.php with absolutely no reason.
#If you are paranoid you can program me to restart main_safe,
#But what will happen if you try to stop me? Bad things.. so...
#IMPORTANT: to die is very different from to freeze
main(){
trap "" HUP
while sleep 60; do
php master.php &
#do whatever you want here
#uncomment this to prevent two instances of master.php from going up maybe it is necessary:
wait
done
}
#nohup is not needed in shell script
main_safe&
pstree -p | grep $!
Это приемлемо?
Если ваш сценарий требует ввода, это означает, что его нужно запустить в терминале, чтобы вы не могли запустить его просто как ярлык. Однако вы можете использовать эмулятор терминала, который предлагает возможность передавать ему команды и запускать этот с помощью вашего ярлыка. Например, используя gnome-terminal
, вы можете назначить ярлык для этой команды:
gnome-terminal -- python3 /somefolder/myscript.py
Это откроет терминал, запустит в нем ваш скрипт, позволяя вам ввести ввод, а затем выйдет. Однако терминал останется открытым.
Другой подход заключается в использовании вместо этого псевдонима оболочки. Добавьте эту строку в файл инициализации вашей оболочки (, например.~/.bashrc
):
alias foo="python3 /somefolder/myscript.py"
Затем откройте новый терминал, и теперь вы можете запустить foo
, который выполнит ваш скрипт.
Вы можете сделать что-то вроде gnome-terminal -- "python3 /somefolder/myscript.py"
, чтобы выполнить его в терминале и увидеть результат.