1#!/bin/bash
2
3testConfig() {
4 `${CMAKE_INSTALL_PREFIX}/bin/rserver --test-config`
5}
6
7verifyInstallation() {
8 ${CMAKE_INSTALL_PREFIX}/bin/rserver --verify-installation=1 --server-daemonize=0 $1 $2 $3 $4 $5 $6 $7 $8
9}
10
11isServerRunning() {
12 pgrep -x rserver &> /dev/null
13}
14
15
16case "$1" in
17
18    status)
19        launchctl list com.rstudio.launchd.rserver
20        ;;
21
22    start)
23        testConfig || exit $?
24        launchctl start com.rstudio.launchd.rserver
25        ;;
26
27    stop)
28        launchctl stop com.rstudio.launchd.rserver
29        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rsession 2>/dev/null
30        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rworkspaces 2>/dev/null
31        ;;
32
33    restart)
34        testConfig || exit $?
35        launchctl stop com.rstudio.launchd.rserver
36        launchctl start com.rstudio.launchd.rserver
37        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rsession 2>/dev/null
38        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rworkspaces 2>/dev/null
39        ;;
40
41    test-config)
42        testConfig
43        ;;
44
45    verify-installation)
46        if isServerRunnng ; then
47           echo "Server is running and must be stopped before running verify-installation"
48           exit 1
49        fi
50
51        # we call stop here even though the service should already be stopped
52        # just in case (we don't want the service running when invoking verify-installation)
53        launchctl stop com.rstudio.launchd.rserver 2>/dev/null
54
55        verifyInstallation $2 $3 $4 $5 $6 $7 $8
56        ;;
57
58    suspend-session)
59        if [ -n "$2" ]; then
60           kill -USR1 $3 $4 $5 $6 $7 $8 $9 $2
61        else
62           echo "Must specify PID of session to suspend"
63           exit 1
64        fi
65        ;;
66
67    suspend-all)
68        killall -USR1 $2 $3 $4 $5 $6 $7 $8 $9 rsession 2>/dev/null
69        killall -USR1 $2 $3 $4 $5 $6 $7 $8 $9 rworkspaces 2>/dev/null
70        ;;
71
72    force-suspend-session)
73        if [ -n "$2" ]; then
74           kill -USR2 $3 $4 $5 $6 $7 $8 $9 $2
75        else
76           echo "Must specify PID of session to force suspend"
77           exit 1
78        fi
79        ;;
80
81    force-suspend-all)
82        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rsession 2>/dev/null
83        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rworkspaces 2>/dev/null
84        ;;
85
86    kill-session)
87        if [ -n "$2" ]; then
88           kill -KILL $3 $4 $5 $6 $7 $8 $9 $2
89        else
90           echo "Must specify PID of session to kill"
91           exit 1
92        fi
93        ;;
94
95    kill-all)
96        killall -KILL $2 $3 $4 $5 $6 $7 $8 $9  rsession 2>/dev/null
97        killall -KILL $2 $3 $4 $5 $6 $7 $8 $9  rworkspaces 2>/dev/null
98        ;;
99
100    offline)
101        mkdir -p /var/lib/rstudio-server
102        touch /var/lib/rstudio-server/offline
103        launchctl stop com.rstudio.launchd.rserver
104        launchctl start com.rstudio.launchd.rserver
105        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rsession 2>/dev/null
106        killall -USR2 $2 $3 $4 $5 $6 $7 $8 $9  rworkspaces 2>/dev/null
107        ;;
108
109    online)
110        mkdir -p /var/lib/rstudio-server
111        rm -f /var/lib/rstudio-server/offline
112        launchctl stop com.rstudio.launchd.rserver
113        launchctl start com.rstudio.launchd.rserver
114        ;;
115
116    active-sessions)
117        ps axo pid,cputime,args | grep [r]session
118        ;;
119
120    version)
121        echo "${CPACK_PACKAGE_VERSION} (${RSTUDIO_RELEASE_NAME})"
122        ;;
123
124    *)
125        echo $"Usage: rstudio-server {status|start|stop|restart|test-config|verify-installation|suspend-session|suspend-all|force-suspend-session|force-suspend-all|kill-session|kill-all|offline|online|active-sessions|version}"
126        exit 2
127esac
128