diff options
author | David Walter Seikel | 2011-11-26 20:07:01 +1000 |
---|---|---|
committer | David Walter Seikel | 2011-11-26 20:07:01 +1000 |
commit | c193946f0562bf690b6ee4afe4fa7506a74ce568 (patch) | |
tree | 71c3c9c8323dce3c3e3a81023fdcba9c40164eaf /start-sim-in-rest | |
parent | Make it safe. (diff) | |
download | IGnoble-c193946f0562bf690b6ee4afe4fa7506a74ce568.zip IGnoble-c193946f0562bf690b6ee4afe4fa7506a74ce568.tar.gz IGnoble-c193946f0562bf690b6ee4afe4fa7506a74ce568.tar.bz2 IGnoble-c193946f0562bf690b6ee4afe4fa7506a74ce568.tar.xz |
Better screen handling.
Diffstat (limited to '')
-rwxr-xr-x | start-sim-in-rest | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/start-sim-in-rest b/start-sim-in-rest index 4738c2e..e29490d 100755 --- a/start-sim-in-rest +++ b/start-sim-in-rest | |||
@@ -8,17 +8,18 @@ Screaming="true" | |||
8 | #Screaming="" | 8 | #Screaming="" |
9 | 9 | ||
10 | USER=$(whoami) | 10 | USER=$(whoami) |
11 | console_name="OpenSim_console" | ||
12 | screen_session=opensim/${console_name} | ||
13 | screen_check="screen -ls opensim/" | ||
14 | osversion="current" | ||
15 | bindir=/opt/opensim/${osversion}/bin | ||
16 | quiet="" | ||
11 | 17 | ||
12 | console_name=screen_console | 18 | if [ "$1" = "-q" ] |
13 | if [ "$USER" = "opensim" ] | ||
14 | then | 19 | then |
15 | screen_session=opensim/${console_name} | 20 | quiet="true" |
16 | screen_check="screen -ls opensim/" | 21 | shift 1 |
17 | else | ||
18 | screen_session=${console_name} | ||
19 | screen_check="screen -ls" | ||
20 | fi | 22 | fi |
21 | osversion="current" | ||
22 | 23 | ||
23 | if [ "x$1" = "x" ]; then | 24 | if [ "x$1" = "x" ]; then |
24 | pathname=$(pwd) | 25 | pathname=$(pwd) |
@@ -36,14 +37,22 @@ if [ "x$tgt" = "x" ]; then | |||
36 | exit 1 | 37 | exit 1 |
37 | fi | 38 | fi |
38 | 39 | ||
40 | if [ $USER = "opensim" ] | ||
41 | then | ||
42 | SUDO="" | ||
43 | else | ||
44 | SUDO="sudo -Hu opensim" | ||
45 | fi | ||
46 | |||
47 | cd ${bindir} | ||
39 | if [ "x$Screaming" = "xtrue" ] | 48 | if [ "x$Screaming" = "xtrue" ] |
40 | then | 49 | then |
41 | if ($screen_check | grep -q ${console_name}); then | 50 | if ($screen_check | grep -q ${console_name}); then |
42 | echo "INFO: Screen already running" | 51 | echo "INFO: Screen already running" |
43 | true | 52 | true |
44 | else | 53 | else |
45 | echo "DEBUG: Starting screen" | 54 | echo "DEBUG: Starting screen" |
46 | screen -d -m -S ${console_name} | 55 | $SUDO screen -d -m -S ${console_name} |
47 | fi | 56 | fi |
48 | fi | 57 | fi |
49 | 58 | ||
@@ -52,39 +61,35 @@ if [ "x$tgt" = "xrobust" ]; then | |||
52 | else | 61 | else |
53 | exe="OpenSim" | 62 | exe="OpenSim" |
54 | fi | 63 | fi |
64 | |||
55 | inidir=/opt/opensim/config/${tgt} | 65 | inidir=/opt/opensim/config/${tgt} |
56 | bindir=/opt/opensim/${osversion}/bin | ||
57 | cmd="/usr/bin/mono ${exe}.exe -inidirectory=${inidir} -logconfig=${inidir}/${exe}.exe.config $NeedARest" | 66 | cmd="/usr/bin/mono ${exe}.exe -inidirectory=${inidir} -logconfig=${inidir}/${exe}.exe.config $NeedARest" |
67 | title=$(head -n 1 ${inidir}/Regions/sim.ini ) | ||
58 | 68 | ||
59 | # Check if it's already running. | 69 | # Check if it's already running. |
60 | if [ ! -e /var/run/opensim/${tgt} ] | 70 | if [ ! -e /var/run/opensim/${tgt} ] |
61 | then | 71 | then |
62 | if [ "x$Screaming" = "xtrue" ] | 72 | if [ "x$Screaming" = "xtrue" ] |
63 | then | 73 | then |
64 | tmpfile=`mktemp` | 74 | echo "INFO: start process and connect to screen (opensim) $title" |
65 | echo "chdir ${bindir}" > ${tmpfile} | 75 | $SUDO screen -r ${screen_session} -p "-" -X screen -t "${title}" ${cmd} |
66 | echo "screen -t ${tgt} ${cmd}" >> ${tmpfile} | ||
67 | chmod a+r ${tmpfile} | ||
68 | rm -f ${inidir}/start.screen | ||
69 | cp ${tmpfile} ${inidir}/start.screen | ||
70 | rm ${tmpfile} | ||
71 | # echo "INFO: start process and connect to screen (opensim)" | ||
72 | screen -r ${screen_session} -p "-" -X source ${inidir}/start.screen | ||
73 | else | 76 | else |
74 | cd ${bindir} | ||
75 | $cmd | 77 | $cmd |
76 | fi | 78 | fi |
77 | fi | 79 | fi |
78 | 80 | ||
79 | # Either way, need to start up the console after. | 81 | if [ "x$quiet" = "x" ] |
80 | if [ "x$Screaming" = "xtrue" ] | ||
81 | then | 82 | then |
82 | echo "Starting screen client." | 83 | # Either way, need to start up the console after. |
84 | if [ "x$Screaming" = "xtrue" ] | ||
85 | then | ||
86 | echo "Starting screen client." | ||
83 | screen -r ${screen_session} -A | 87 | screen -r ${screen_session} -A |
84 | elif [ "x$NeedARest" != "x" ] | 88 | elif [ "x$NeedARest" != "x" ] |
85 | then | 89 | then |
86 | echo "Starting rest client." | 90 | echo "Starting rest client." |
87 | cd ${inidir} | 91 | cd ${inidir} |
88 | /usr/bin/mono ${bindir}/OpenSim.ConsoleClient.exe -logconfig=${inidir}/${exe}.exe.config | 92 | /usr/bin/mono ${bindir}/OpenSim.ConsoleClient.exe -logconfig=${inidir}/${exe}.exe.config |
93 | fi | ||
89 | fi | 94 | fi |
90 | 95 | ||