aboutsummaryrefslogtreecommitdiff
path: root/libexec/app-operator-pid
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/app-operator-pid')
-rwxr-xr-xlibexec/app-operator-pid65
1 files changed, 58 insertions, 7 deletions
diff --git a/libexec/app-operator-pid b/libexec/app-operator-pid
index db1da1f..71871de 100755
--- a/libexec/app-operator-pid
+++ b/libexec/app-operator-pid
@@ -23,7 +23,7 @@ do_status() {
}
find_launcher() {
- launcher=`app-conf get app.launcher`
+ local launcher=`app-conf get app.launcher`
if [ ! -z "$launcher" ]
then
@@ -59,8 +59,34 @@ find_launcher() {
echo $launcher
}
+find_pid_management() {
+ pid_management=`app-conf get app.pid_management`
+
+ if [[ $pid_management == "" ]]
+ then
+ echo "appsh"
+ return
+ fi
+
+ case "$pid_management" in
+ launcher)
+ echo "$pid_management"
+ ;;
+ *)
+ fatal "Invalid app.pid_management: $pid_management"
+ ;;
+ esac
+}
+
command_start() {
launcher=`find_launcher`
+ set -x
+ echo pwd=`pwd`
+ pid_management=`find_pid_management`
+
+ debug "launcher=$launcher"
+ debug "pid_management=$pid_management"
+ debug "pwd=`pwd`"
case `do_status` in
running)
@@ -69,12 +95,37 @@ command_start() {
;;
esac
- echo "Starting app with $launcher, pwd=`pwd`"
- $launcher <&- 1<&- 2<&- &
-
+ echo "Starting app..."
+ $launcher <&- 1>&- 2>&- &
+
PID=$!
- echo "Application launched as $PID"
- echo $PID > $pid_file
+
+ case "$pid_management" in
+ appsh)
+ echo "Application launched as $PID"
+ echo $PID > $pid_file
+ ;;
+ launcher)
+ launch_timeout=`app conf get app.launch_timeout`
+ if [[ ! $launch_timeout =~ [0-9] ]]
+ then
+ launch_timeout=10
+ fi
+ # the PID file is managed by the launcher, so wait for it to show up
+ for ((x = 0; x < "$launch_timeout"; x++))
+ do
+ echo "Waiting for PID to show up..."
+ sleep 1
+ if [ -r $pid_file ]
+ then
+ return 0
+ fi
+ done
+
+ echo "Appliation failed to start"
+ return 1
+ ;;
+ esac
return 0
}
@@ -94,7 +145,7 @@ command_stop() {
;;
esac
- echo -n "Sending kill TERM to $PID, waiting for shutdown"
+ echo -n "Sending TERM to $PID, waiting for shutdown"
kill -TERM $PID
for i in {1..10}