screen_service() can currently only be used to launch things that
pass the 'is_service_enabled' check, even though its calling functions
will have already done this. This removes such check, renames it
to screen_process() and updates its usage elsewhere.
Change-Id: I480a4560a45b131a95c1b2d2d2379aeba542a9bc
... | ... |
@@ -1251,7 +1251,7 @@ function run_process { |
1251 | 1251 |
|
1252 | 1252 |
if is_service_enabled $service; then |
1253 | 1253 |
if [[ "$USE_SCREEN" = "True" ]]; then |
1254 |
- screen_service "$service" "$command" "$group" |
|
1254 |
+ screen_process "$service" "$command" "$group" |
|
1255 | 1255 |
else |
1256 | 1256 |
# Spawn directly without screen |
1257 | 1257 |
_run_process "$service" "$command" "$group" & |
... | ... |
@@ -1259,14 +1259,14 @@ function run_process { |
1259 | 1259 |
fi |
1260 | 1260 |
} |
1261 | 1261 |
|
1262 |
-# Helper to launch a service in a named screen |
|
1262 |
+# Helper to launch a process in a named screen |
|
1263 | 1263 |
# Uses globals ``CURRENT_LOG_TIME``, ``SCREEN_NAME``, ``SCREEN_LOGDIR``, |
1264 | 1264 |
# ``SERVICE_DIR``, ``USE_SCREEN`` |
1265 |
-# screen_service service "command-line" [group] |
|
1265 |
+# screen_process name "command-line" [group] |
|
1266 | 1266 |
# Run a command in a shell in a screen window, if an optional group |
1267 | 1267 |
# is provided, use sg to set the group of the command. |
1268 |
-function screen_service { |
|
1269 |
- local service=$1 |
|
1268 |
+function screen_process { |
|
1269 |
+ local name=$1 |
|
1270 | 1270 |
local command="$2" |
1271 | 1271 |
local group=$3 |
1272 | 1272 |
|
... | ... |
@@ -1274,38 +1274,36 @@ function screen_service { |
1274 | 1274 |
SERVICE_DIR=${SERVICE_DIR:-${DEST}/status} |
1275 | 1275 |
USE_SCREEN=$(trueorfalse True $USE_SCREEN) |
1276 | 1276 |
|
1277 |
- if is_service_enabled $service; then |
|
1278 |
- # Append the service to the screen rc file |
|
1279 |
- screen_rc "$service" "$command" |
|
1280 |
- |
|
1281 |
- screen -S $SCREEN_NAME -X screen -t $service |
|
1282 |
- |
|
1283 |
- if [[ -n ${SCREEN_LOGDIR} ]]; then |
|
1284 |
- screen -S $SCREEN_NAME -p $service -X logfile ${SCREEN_LOGDIR}/screen-${service}.${CURRENT_LOG_TIME}.log |
|
1285 |
- screen -S $SCREEN_NAME -p $service -X log on |
|
1286 |
- ln -sf ${SCREEN_LOGDIR}/screen-${service}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${service}.log |
|
1287 |
- fi |
|
1277 |
+ # Append the process to the screen rc file |
|
1278 |
+ screen_rc "$name" "$command" |
|
1288 | 1279 |
|
1289 |
- # sleep to allow bash to be ready to be send the command - we are |
|
1290 |
- # creating a new window in screen and then sends characters, so if |
|
1291 |
- # bash isn't running by the time we send the command, nothing happens |
|
1292 |
- sleep 3 |
|
1280 |
+ screen -S $SCREEN_NAME -X screen -t $name |
|
1293 | 1281 |
|
1294 |
- NL=`echo -ne '\015'` |
|
1295 |
- # This fun command does the following: |
|
1296 |
- # - the passed server command is backgrounded |
|
1297 |
- # - the pid of the background process is saved in the usual place |
|
1298 |
- # - the server process is brought back to the foreground |
|
1299 |
- # - if the server process exits prematurely the fg command errors |
|
1300 |
- # and a message is written to stdout and the service failure file |
|
1301 |
- # |
|
1302 |
- # The pid saved can be used in stop_process() as a process group |
|
1303 |
- # id to kill off all child processes |
|
1304 |
- if [[ -n "$group" ]]; then |
|
1305 |
- command="sg $group '$command'" |
|
1306 |
- fi |
|
1307 |
- screen -S $SCREEN_NAME -p $service -X stuff "$command & echo \$! >$SERVICE_DIR/$SCREEN_NAME/${service}.pid; fg || echo \"$service failed to start\" | tee \"$SERVICE_DIR/$SCREEN_NAME/${service}.failure\"$NL" |
|
1282 |
+ if [[ -n ${SCREEN_LOGDIR} ]]; then |
|
1283 |
+ screen -S $SCREEN_NAME -p $name -X logfile ${SCREEN_LOGDIR}/screen-${name}.${CURRENT_LOG_TIME}.log |
|
1284 |
+ screen -S $SCREEN_NAME -p $name -X log on |
|
1285 |
+ ln -sf ${SCREEN_LOGDIR}/screen-${name}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${name}.log |
|
1286 |
+ fi |
|
1287 |
+ |
|
1288 |
+ # sleep to allow bash to be ready to be send the command - we are |
|
1289 |
+ # creating a new window in screen and then sends characters, so if |
|
1290 |
+ # bash isn't running by the time we send the command, nothing happens |
|
1291 |
+ sleep 3 |
|
1292 |
+ |
|
1293 |
+ NL=`echo -ne '\015'` |
|
1294 |
+ # This fun command does the following: |
|
1295 |
+ # - the passed server command is backgrounded |
|
1296 |
+ # - the pid of the background process is saved in the usual place |
|
1297 |
+ # - the server process is brought back to the foreground |
|
1298 |
+ # - if the server process exits prematurely the fg command errors |
|
1299 |
+ # and a message is written to stdout and the process failure file |
|
1300 |
+ # |
|
1301 |
+ # The pid saved can be used in stop_process() as a process group |
|
1302 |
+ # id to kill off all child processes |
|
1303 |
+ if [[ -n "$group" ]]; then |
|
1304 |
+ command="sg $group '$command'" |
|
1308 | 1305 |
fi |
1306 |
+ screen -S $SCREEN_NAME -p $name -X stuff "$command & echo \$! >$SERVICE_DIR/$SCREEN_NAME/${name}.pid; fg || echo \"$name failed to start\" | tee \"$SERVICE_DIR/$SCREEN_NAME/${name}.failure\"$NL" |
|
1309 | 1307 |
} |
1310 | 1308 |
|
1311 | 1309 |
# Screen rc file builder |
... | ... |
@@ -1412,12 +1410,12 @@ function service_check { |
1412 | 1412 |
|
1413 | 1413 |
# Tail a log file in a screen if USE_SCREEN is true. |
1414 | 1414 |
function tail_log { |
1415 |
- local service=$1 |
|
1415 |
+ local name=$1 |
|
1416 | 1416 |
local logfile=$2 |
1417 | 1417 |
|
1418 | 1418 |
USE_SCREEN=$(trueorfalse True $USE_SCREEN) |
1419 | 1419 |
if [[ "$USE_SCREEN" = "True" ]]; then |
1420 |
- screen_service "$service" "sudo tail -f $logfile" |
|
1420 |
+ screen_process "$name" "sudo tail -f $logfile" |
|
1421 | 1421 |
fi |
1422 | 1422 |
} |
1423 | 1423 |
|
... | ... |
@@ -1476,7 +1474,7 @@ function screen_it { |
1476 | 1476 |
screen_rc "$1" "$2" |
1477 | 1477 |
|
1478 | 1478 |
if [[ "$USE_SCREEN" = "True" ]]; then |
1479 |
- screen_service "$1" "$2" |
|
1479 |
+ screen_process "$1" "$2" |
|
1480 | 1480 |
else |
1481 | 1481 |
# Spawn directly without screen |
1482 | 1482 |
old_run_process "$1" "$2" >$SERVICE_DIR/$SCREEN_NAME/$1.pid |