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