После того как торговый терминал MetaTrader успешно установился и запустился на OS Debian GNU/Linux без графического окружения, возникла нужда запускать его автоматически при старте системы/падении терминала.
Изначально это осуществлялось по cron, но потом захотелось "демонизировать" терминал (запускать как сервис из rc.d). В результате получился Debian-like rc.d скрипт.
Итак:
Итак:
nano /etc/init.d/metatrader
#! /bin/sh ### BEGIN INIT INFO # Provides: metatrader # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: MetaTrader init script # Description: This file should be used to construct scripts to be # placed in /etc/init.d. ### END INIT INFO # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin export DISPLAY=:2 USER="metatrader" NAME=$USER TERMINAL="/usr/bin/wine /home/$USER/.wine/drive_c/metatrader/terminal.exe" SCRIPTNAME=/etc/init.d/$NAME XVFB=/usr/bin/Xvfb XVFB_ARGS="$DISPLAY -screen 0 800x600x16 -nolisten tcp" XVFB_PIDFILE=/var/run/xvfb.$NAME.pid [ -x "$XVFB" ] || exit 0 . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { log_daemon_msg "Starting $NAME" "MetaTrader" log_daemon_msg "Starting" "Xvfb" start-stop-daemon --start --quiet \ --make-pidfile --chuid $USER \ --pidfile $XVFB_PIDFILE --exec $XVFB -- \ $XVFB_ARGS > /dev/null 2>&1 & log_end_msg 0 log_daemon_msg "Starting" "terminal" start-stop-daemon --start --quiet \ --chuid $USER --exec $TERMINAL > /dev/null 2>&1 & log_end_msg 0 } do_stop() { log_daemon_msg "Stoping $NAME" "MetaTrader" start-stop-daemon --stop --retry 5 --quiet \ --pidfile $XVFB_PIDFILE --name Xvfb rm $XVFB_PIDFILE > /dev/null 2>&1 & log_end_msg 0 } case "$1" in start) do_start ;; stop) do_stop ;; restart) do_stop do_start ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2 exit 3 ;; esac exit 0
update rc.d metatrader defaultsСобственно и все. Так же можно поставить alertmon для мониторинга работы терминала. Лично у меня alertmon следит за процессом работы терминала и при его падении делает service metatrader restart.