Причина была не в capistrano, как таковом. Это было связано с тем, что процесс, запущенный capistrano, был убит при выходе из него после выполнения задачи. Нам пришлось модифицировать скрипт init, чтобы исправить эту проблему. 'nohup' используется для того, чтобы демон оставался в bg даже после того, как cap существует в ssh-сессии. Ниже приведена модифицированная часть скрипта init (start).
case "$1" in
start)
#checking to see if the process is already running, if it is, display a message and exit
if [ -n "`ps aux |grep /opt/mount/xyz/current/src/main.py | grep -v grep`" ]; then
echo "Service is already running, try stopping it first with 'service xyz stop'"
exit
fi
printf "%-50s" "Starting $DAEMON_NAME..."
cd $DIR
[ -d $LOGPATH ] || mkdir $LOGPATH
[ -f $LOGFILE ] || su $DAEMON_USER -c 'touch $LOGFILE'
nohup $PYTHON $DAEMON $DAEMON_OPTS > $LOGFILE 2>&1 &
echo $! > $PIDFILE
sleep 5
;;
Вы используете cryptsetup, у него есть возможность использовать файл ключа вместо пароля, так что просто используйте
- - k e y - f i l e
Я не знаю, как ваши rsync и systemctl настроены для автоматического выполнения других действий, но просто добавьте туда команду cryptsetup --keyfile... decrypt.
Возможно, вам нужен другой метод для обеспечения безопасности ключевого файла, например, ваш домашний или системный диск зашифрован?