-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathswarm-client-nutci.init.sh
executable file
·89 lines (76 loc) · 3.01 KB
/
swarm-client-nutci.init.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh
#
# chkconfig: - 70 40
# description: Init-script for jenkins swarm client for NUT CI farm
#
### BEGIN INIT INFO
# Provides: swarm_client_nutci
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Start and stop swarm_client_nutci
# Description: Init-script for jenkins swarm client for NUT CI farm
### END INIT INFO
#
# Init-script for jenkins swarm client
# Symlink as /etc/init.d/swarm_client_nutci and then
# chkconfig --add swarm_client_nutci
#
# May also work for systems with rc.d approach -
# Symlink as /etc/init.d/rc.swarm_client_nutci and hope it works :)
# May need to embed into /etc/rc.d/rc.0 and rc.6 (shutdown/reboot)
# and /etc/rc.d/rc.inet2 (startup), or /etc/rc.local or similar -
# look around for the approach of the particular OS.
# FIXME: Make configurable?
SHMDIR=/dev/shm
#exec >> /var/log/swarm_client_nutci.rcctl.log 2>&1
#echo "===== `date`: $0 $*"
#set -x
# These lines run as root, regardless of daemon_user
if [ -n "`/sbin/mount | grep "${SHMDIR}"`" ] ; then : ; else
# This can be automated in /etc/fstab with such line, e.g.:
# swap /dev/shm mfs rw,nodev,nosuid,-s=1536000 0 0
mkdir "${SHMDIR}"
mount -t tmpfs -o rw,nodev,nosuid,inode64 swap "${SHMDIR}"
fi
if [ -d "${SHMDIR}" ]; then chmod 1777 "${SHMDIR}" ; fi
daemon_user="abuild"
touch /var/log/swarm-client-nutci
chown ${daemon_user} /var/log/swarm-client-nutci
# allow larger resource limits (consider even "daemon" for unlimited?)
# see /etc/login.conf for standard definitions
#usermod -L pbuild ${daemon_user}
downloader="/home/abuild/jenkins-swarm/swarm-client-download.sh >> /var/log/swarm-client-nutci 2>&1"
daemon="/home/abuild/jenkins-swarm/swarm-client-nutci.sh"
#daemon="cd "${SHMDIR}" && nohup /home/abuild/jenkins-swarm/swarm-client-nutci.sh >> /var/log/swarm-client-nutci 2>&1 &"
#daemon="/bin/sh -c \\' cd "${SHMDIR}" && nohup /home/abuild/jenkins-swarm/swarm-client-nutci.sh >> /var/log/swarm-client-nutci 2>&1 \\' &"
# Allow to restart the service on command line (or via rcctl)
#INRC=1
#. /etc/rc.d/rc.subr
rc_start() {
echo "`date`: Starting $0" >> /var/log/swarm-client-nutci
# exec >> /var/log/swarm_client_nutci.rcctl.log 2>&1
# set -x
# set -v
PATH="$PATH:/usr/local/sbin:/usr/local/bin" ${downloader}
#cd "${SHMDIR}" || exit
# Leading single-token no-op due to shell inlining peculiarities generally
cd "${SHMDIR}" && nohup su - ${daemon_user} -c ' true; ulimit -a >&2; /home/abuild/jenkins-swarm/swarm-client-nutci.sh' >> /var/log/swarm-client-nutci 2>&1 &
}
rc_stop() {
echo "`date`: Stopping $0" >> /var/log/swarm-client-nutci
kill -15 `ps -xawwu | grep java | grep swarm-client | grep ${daemon_user} | awk '{print $2}'`
}
rc_check() {
ps -xawwu | grep java | grep swarm-client | grep ${daemon_user} | awk '{print $2}'
}
#set -x
#rc_cmd $1
case "$1" in
start) rc_start;;
stop) rc_stop;;
restart) rc_stop; wait; sleep 3; rc_start ;;
status|check) rc_check ;;
*) echo "Unknown verb: $1" >&2; exit 1 ;;
esac