私は通常のユーザーからTomcatサービスを実行することはできないようですが、これをルートとして試してみると
root@ip-:/home/ubuntu# service Tomcat
Run as /etc/init.d/Tomcat <start|stop|restart>
root@ip-:/home/ubuntu# service Tomcat start
Failed to start Tomcat.service: Unit Tomcat.service not found.
root@ip-:/home/ubuntu#
私はそれを手動で実行しましたが、うまくいったようです
root@ip-:/home/ubuntu# /etc/init.d/Tomcat start
Using CATALINA_BASE: /usr/local/Tomcat/current_Tomcat
Using CATALINA_HOME: /usr/local/Tomcat/current_Tomcat
Using CATALINA_TMPDIR: /usr/local/Tomcat/current_Tomcat/temp
Using JRE_HOME: /usr/local/Java/current_Java
Using CLASSPATH: /usr/local/Tomcat/current_Tomcat/bin/bootstrap.jar:/usr/local/Tomcat/current_Tomcat/bin/Tomcat-juli.jar
Tomcat started.
通常のユーザーとして実行すると、許可を得ることができないようです。パスワードなしのsshキーのみのユーザーがいます。
ubuntu@ip-:~$ service Tomcat start
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'Tomcat.service'.
Multiple identities can be used for authentication:
1. Ubuntu (ubuntu)
2. An,,, (an)
Choose identity to authenticate as (1-2): 1
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Failed to start Tomcat.service: Access denied
See system logs and 'systemctl status Tomcat.service' for details.
ubuntu@ip-:~$
そして、これがサービスのスクリプトです
ubuntu@ip-:~# cat /etc/init.d/Tomcat
#!/bin/bash
export CATALINA_HOME=/usr/local/Tomcat/current_Tomcat`
start() {
sh $CATALINA_HOME/bin/startup.sh
}
stop() {
sh $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
start|stop) $1;;
restart) stop; start;;
*) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac
ubuntu@ip-:~# ll /etc/init.d/Tomcat
-rwxr-xr-x 1 root root 306 Feb 14 07:20 /etc/init.d/Tomcat*
この問題が発生している間、Ubuntu 16.04を使用しています。解決しました。
まず、スクリプトの先頭に1行追加します。
. /lib/lsb/init-functions
次に、シェルで、/ etc/rc *からスクリプトへのシンボリックリンクを作成します。
Sudo update-rc.d Tomcat defaults 95
これにより、再起動後にスクリプトが自動的に実行されます。