JobScheduler を CentOS7 の systemd で自動起動/停止するように設定してみました。
環境は、以下のとおり。
JobScheduler 用に admin ユーザを使用しています。
- CentOS 7.3
- JobScheduler 1.11.0-RC2
JobScheduler Engine
JobScheduler Engine は、自分で自動起動/停止を設定する必要があります。
systemd 用に設定ファイルを作成します。
[root@centos701 ~]# cat /etc/systemd/system/jobscheduler.service [Unit] Description=SOS JobScheduler After=mariadb.service [Service] Type=forking ExecStart=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh start ExecStop=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh stop PIDFile=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/logs/scheduler.pid [Install] WantedBy=multi-user.target
[root@centos701 ~]# systemctl list-unit-files --type=service | grep jobscheduler jobscheduler.service disabled
[root@centos701 ~]# systemctl enable jobscheduler.service Created symlink from /etc/systemd/system/multi-user.target.wants/jobscheduler.service to /etc/systemd/system/jobscheduler.service. [root@centos701 ~]# systemctl list-unit-files --type=service | grep jobscheduler jobscheduler.service enabled
[root@centos701 ~]# systemctl start jobscheduler.service Job for jobscheduler.service failed because a configured resource limit was exceeded. See "systemctl status jobscheduler.service" and "journalctl -xe" for details.
PIDファイルが読めなくてエラーになっているようです。
[root@centos701 ~]# systemctl status jobscheduler.service ● jobscheduler.service - SOS JobScheduler Loaded: loaded (/etc/systemd/system/jobscheduler.service; enabled; vendor preset: disabled) Active: failed (Result: resources) since 日 2017-01-08 22:52:45 JST; 2min 30s ago Process: 6085 ExecStop=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh stop (code=exited, status=0/SUCCESS) Process: 6181 ExecStart=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh start (code=exited, status=0/SUCCESS) Main PID: 5985 (code=exited, status=0/SUCCESS) 1月 08 22:52:44 centos701 systemd[1]: Starting SOS JobScheduler... 1月 08 22:52:44 centos701 jobscheduler.sh[6181]: Starting JobScheduler... 1月 08 22:52:44 centos701 su[6196]: (to admin) root on none 1月 08 22:52:45 centos701 systemd[1]: PID file /home/admin/sos-berlin.com/jobscheduler/centos701_4444/logs/scheduler.pid not readable (yet?) after start. 1月 08 22:52:45 centos701 systemd[1]: Failed to start SOS JobScheduler. 1月 08 22:52:45 centos701 systemd[1]: Unit jobscheduler.service entered failed state. 1月 08 22:52:45 centos701 systemd[1]: jobscheduler.service failed.
[root@centos701 ~]# ps -ef | grep job admin 6218 1 10 22:52 ? 00:00:23 /opt/sos-berlin.com/jobscheduler/centos701_4444/bin/scheduler -service -id=centos701_4444 -sos.ini=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/config/sos.ini -ini=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/config/factory.ini -config=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/config/scheduler.xml -param=/home/admin/sos-berlin.com/jobscheduler/centos701_4444 -cd=/home/admin/sos-berlin.com/jobscheduler/centos701_4444 -include-path=/home/admin/sos-berlin.com/jobscheduler/centos701_4444 -pid-file=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/logs/scheduler.pid root 6369 2421 0 22:56 pts/0 00:00:00 grep --color=auto job [root@centos701 ~]# ls -l /home/admin/sos-berlin.com/jobscheduler/centos701_4444/logs/scheduler.pid -rw-r--r-- 1 admin admin 5 1月 8 22:52 /home/admin/sos-berlin.com/jobscheduler/centos701_4444/logs/scheduler.pid
start) # some applications need X-Server
# export DISPLAY=:1
# $SH "Xvfb :1" &
# echo $! > $SCHEDULER_DATA/logs/Xvfb.pid
if running
then
SCHEDULERPID=`cat "${SCHEDULER_PID}"`
echo "...JobScheduler is already running with pid=${SCHEDULERPID}!"
exit 0
fi
shift
if [ "$1" = "paused" ]
then
echo "Starting JobScheduler paused..."
SCHEDULER_SECOND_ARG="-cmd=\"<modify_spooler cmd='pause'/>\""
shift
else
echo "Starting JobScheduler..."
SCHEDULER_SECOND_ARG=""
fi
apply_cluster_options "$@"
apply_pause_after_failure "$@"
SCHEDULER_ARGS="\"$SCHEDULER_BIN\" $SCHEDULER_ARGS $SCHEDULER_START_PARAMS $SCHEDULER_SECOND_ARG"
start_jobscheduler
remember_status
sleep 2
;;
start_safe|start-safe)
[root@centos701 ~]# /opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh stop
JobScheduler Engine を起動すると、今度は成功しました。
[root@centos701 ~]# systemctl start jobscheduler.service [root@centos701 ~]# systemctl status jobscheduler.service ● jobscheduler.service - SOS JobScheduler Loaded: loaded (/etc/systemd/system/jobscheduler.service; enabled; vendor preset: disabled) Active: active (running) since 日 2017-01-08 23:04:09 JST; 7s ago Process: 6085 ExecStop=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh stop (code=exited, status=0/SUCCESS) Process: 6674 ExecStart=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh start (code=exited, status=0/SUCCESS) Main PID: 6712 (scheduler) CGroup: /system.slice/jobscheduler.service ‣ 6712 /opt/sos-berlin.com/jobscheduler/centos701_4444/bin/scheduler -service -id=centos701_4444 -sos.ini=/home/admin/sos-berlin.com/jobscheduler/centos701_4444/... 1月 08 23:04:06 centos701 systemd[1]: Starting SOS JobScheduler... 1月 08 23:04:06 centos701 jobscheduler.sh[6674]: Starting JobScheduler... 1月 08 23:04:06 centos701 su[6688]: (to admin) root on none 1月 08 23:04:09 centos701 systemd[1]: Started SOS JobScheduler.
[root@centos701 ~]# systemctl stop jobscheduler.service [root@centos701 ~]# systemctl status jobscheduler.service ● jobscheduler.service - SOS JobScheduler Loaded: loaded (/etc/systemd/system/jobscheduler.service; enabled; vendor preset: disabled) Active: inactive (dead) since 日 2017-01-08 23:05:10 JST; 6s ago Process: 6814 ExecStop=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh stop (code=exited, status=0/SUCCESS) Process: 6674 ExecStart=/opt/sos-berlin.com/jobscheduler/centos701_4444/bin/jobscheduler.sh start (code=exited, status=0/SUCCESS) Main PID: 6712 (code=exited, status=0/SUCCESS) 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ........... job chains: 14 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ................. jobs: 26 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ....... enqueued tasks: 0 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ............... orders: 10 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ..... remote instances: 0, connected instances: 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: ________________________________________________________________________ 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: No jobs are running for this instance 1月 08 23:05:07 centos701 jobscheduler.sh[6814]: Shutting down JobScheduler... 1月 08 23:05:08 centos701 jobscheduler.sh[6814]: <?xml version="1.0" encoding="ISO-8859-1"?><spooler><answer time="2017-01-08T14:05:08.669Z"><ok/></answer></spooler> 1月 08 23:05:10 centos701 systemd[1]: Stopped SOS JobScheduler.
JOC Cockpit
JOC Cockpit は、インストール時に、自動起動/停止が設定されます。
/etc/init.d/joc が起動/停止用のスクリプトです。
[root@centos701 ~]# ls /etc/init.d/ README functions joc netconsole network
手動での起動/停止は以下のように実行します。
[root@centos701 ~]# /etc/init.d/joc stop Stopping Jetty: OK [root@centos701 ~]# /etc/init.d/joc start Starting Jetty: StartLog to /home/admin/sos-berlin.com/joc/logs/start.log 2017-01-08 23:09:25.518:INFO::main: Logging initialized @1627ms 2017-01-08 23:09:25.754:INFO::main: Redirecting stderr/stdout to /var/log/sos-berlin.com/joc/2017_01_08.stderrout.log . . OK 2017年 1月 8日 日曜日 23:09:35 JST