У меня есть сценарий инициализации, как вы видите ниже
#!/bin/bash
# description: connect start | stop | restart | install
# processname: tomcat
# chkconfig: 234 99 01
JAVA_HOME=/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/
ulimit -v unlimited -m..
LOG_COPY_FOLDER=$(date +"%Y-%m-%d_%H%M")
case $1 in
start)
JAVA_OPTS='-Xms160g -Xmx160g -XX:+ResetSignal_MaskAtLaunch -Xloggc:/tom....'
export JAVA_OPTS
echo "Using JAVA_OPTS: $JAVA_OPTS"
find $CATALINA_HOME/logs_prev/* -type d -ctime +180 | xargs rm -rf
mv $CATALINA_HOME/logs $CATALINA_HOME/logs_prev/$LOG_COPY_FOLDER
mkdir $CATALINA_HOME/logs
nohup sh $CATALINA_HOME/bin/startup.sh
less $CATALINA_HOME/logs/catalina.out
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
install)
MySQLConfirmation() {
while :
do
read -p 'Have you run MySQL commands? (y/n): ' answer
case "${answer}" in
y|Y|yes|Yes) exit 0 ;;
n|N|no|No) exit 1 ;;
esac
done
}
if $( MySQLConfirmation ); then
JAVA_OPTS='-Xms160g -Xmx160g -XX:+ResetSignalMaskAtLaunch -Xloggc:/tom...
export JAVA_OPTS
echo "Using JAVA_OPTS: $JAVA_OPTS"
find $CATALINA_HOME/logs_prev/* -type d -ctime +30 | xargs rm -rf
mv $CATALINA_HOME/logs $CATALINA_HOME/logs_prev/$LOG_COPY_FOLDER
**rm -R $CATALINA_HOME/website.com/ROOT**
mkdir $CATALINA_HOME/logs
**mv -f /root/website.war $CATALINA_HOME/websitcom/ROOT.war**
nohup sh $CATALINA_HOME/bin/startup.sh
less $CATALINA_HOME/logs/catalina.out
else
echo "See you when you're done with MySQL updates!"
fi
;;
esac
exit 0
Как видите, у меня есть старт, стоп, перезагрузка и установка процессов. И для процесса установки требуются команды remove и mkdir, которые я не знаю, как реализовать в процессе systemd, потому что я не вижу способа добавить процесс, который можно было бы запускать, например 'systemctl qinstall service'. Есть ли способ добавить Execinstall и Аргументы ExecinstallPre для systemd? Спасибо
systemd
не поддерживает имена настраиваемых действий, такие как install
, он фокусируется на управлении процессами.