Вы могли объединить все эти команды в одну .sh
файл, как это:
#!/bin/bash
kill `ps aux | grep -F 'ServerAPP' | grep -v -F 'grep' | awk '{ print $2 }'`
/full/path/to/server_automated_net_setup.sh
export LD_LIBRARY_PATH=./:~/server/install-dir/lib_boost:~/server/install-dir/lib_openSSL
nohup /full/path/to/ServerAPP >& /dev/null &
Вставьте все это в файл yourname.sh
и сделайте исполняемый файл:
chmod +x yourname.sh
Также это возможно к контролю прямо из сценария svn co url://
, и Вы сможете автоматизировать целый процесс.
Когда программа запускается (одним из exec(3)
семейство системных вызовов), это наследовало среду (т.е. переменные оболочки export
редактор) и открытые файлы от родителя. Что сделано, когда запуск программы является a fork(2)
, ребенок настраивает среду и файлы, затем exec(3)
s новая программа. Когда оболочка делает это, STDIN, STDOUT и STDERR подключены к терминалу. То, что делает любое графическое средство запуска, до него, но, должен подключить их с /dev/null
(куда ввод с клавиатуры должен прибыть из, и куда произведенный должен перейти в?).
Если программа, запущенная как этот в свою очередь, звонит exec(3)
, это как объяснено выше. system(3)
немного более сложно, поскольку это порождает оболочку, чтобы сделать командную строку, анализирующую и так далее и ту оболочку затем exec(3)
s команда. Но механика является тем же: Файлы наследованы, как среда.