stop-ds revision a3d3ab94806056d2355afea6fe8daac41059b9fb
c15b536ddbea458a7a3975079276bf4a9b1617aaMark Andrews#!/bin/sh
c15b536ddbea458a7a3975079276bf4a9b1617aaMark Andrews#
c15b536ddbea458a7a3975079276bf4a9b1617aaMark Andrews# CDDL HEADER START
99425bedc4dcd586f751148bbdcba19578c6f39eMark Andrews#
99425bedc4dcd586f751148bbdcba19578c6f39eMark Andrews# The contents of this file are subject to the terms of the
8013077aa7ed5d6e1daddc973ddb3c7cc7d28df1Mark Andrews# Common Development and Distribution License, Version 1.0 only
8013077aa7ed5d6e1daddc973ddb3c7cc7d28df1Mark Andrews# (the "License"). You may not use this file except in compliance
8013077aa7ed5d6e1daddc973ddb3c7cc7d28df1Mark Andrews# with the License.
8c460e01594e83f21ff5e60cd7a417a1ed618703Mark Andrews#
8c460e01594e83f21ff5e60cd7a417a1ed618703Mark Andrews# You can obtain a copy of the license at
99bf6a57d9f6b55da6de9c22fb6883a4bf7d569eEvan Hunt# trunk/opends/resource/legal-notices/OpenDS.LICENSE
99bf6a57d9f6b55da6de9c22fb6883a4bf7d569eEvan Hunt# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Hunt# See the License for the specific language governing permissions
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Hunt# and limitations under the License.
5805fc20a3f65ee3a78b66aa17801f1d3103cbe1Curtis Blackburn#
e57a83b57659ae1d4f755a7841b519c047ec7f75Evan Hunt# When distributing Covered Code, include this CDDL HEADER in each
e57a83b57659ae1d4f755a7841b519c047ec7f75Evan Hunt# file and include the License file at
e57a83b57659ae1d4f755a7841b519c047ec7f75Evan Hunt# trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
e57a83b57659ae1d4f755a7841b519c047ec7f75Evan Hunt# add the following below this CDDL HEADER, with the fields enclosed
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt# by brackets "[]" replaced with your own identifying information:
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt# Portions Copyright [yyyy] [name of copyright owner]
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt#
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt# CDDL HEADER END
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt#
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt#
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt# Copyright 2006-2008 Sun Microsystems, Inc.
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt
67adc03ef81fb610f8df093b17f55275ee816754Evan Hunt
bbb3705e4cbdacf7cf6da7e448d79d97fdab2411Mark Andrews# This script may be used to request that the Directory Server shut down.
bbb3705e4cbdacf7cf6da7e448d79d97fdab2411Mark Andrews# It operates in two different ways, depending on how it is invoked. If it
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Hunt# is invoked without any arguments and a local PID file is available, then it
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Hunt# will stop the server by sending a TERM signal to the process, and this
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Hunt# script will wait until the server has stopped before exiting. If any
da4436812c7108dd39e09069d4af770eaa738c7fMark Andrews# arguments were provided or there is no local PID file, then it will attempt
da4436812c7108dd39e09069d4af770eaa738c7fMark Andrews# to stop the server using an LDAP request.
da4436812c7108dd39e09069d4af770eaa738c7fMark Andrews
da4436812c7108dd39e09069d4af770eaa738c7fMark Andrews
c82da2167dcbd8300f0eaa81fb900c0b17e8f94cMark Andrews# Capture the current working directory so that we can change to it later.
c82da2167dcbd8300f0eaa81fb900c0b17e8f94cMark Andrews# Then capture the location of this script and the Directory Server instance
c82da2167dcbd8300f0eaa81fb900c0b17e8f94cMark Andrews# root so that we can use them to create appropriate paths.
384fef003441df4067b773688237700513390f9eEvan HuntWORKING_DIR=`pwd`
384fef003441df4067b773688237700513390f9eEvan Hunt
06a05efc07ac7b6ff1973a6463291f5d48ece6ebMark Andrewscd `dirname "${0}"`
06a05efc07ac7b6ff1973a6463291f5d48ece6ebMark AndrewsSCRIPT_DIR=`pwd`
06a05efc07ac7b6ff1973a6463291f5d48ece6ebMark Andrews
06a05efc07ac7b6ff1973a6463291f5d48ece6ebMark Andrewscd ..
06a05efc07ac7b6ff1973a6463291f5d48ece6ebMark AndrewsINSTANCE_ROOT=`pwd`
831f59eb43b56642b00f82e07722836d2f9593abEvan Huntexport INSTANCE_ROOT
831f59eb43b56642b00f82e07722836d2f9593abEvan Hunt
831f59eb43b56642b00f82e07722836d2f9593abEvan Huntcd "${WORKING_DIR}"
831f59eb43b56642b00f82e07722836d2f9593abEvan Hunt
831f59eb43b56642b00f82e07722836d2f9593abEvan Hunt# We keep this values to reset the environment before calling start-ds.
831f59eb43b56642b00f82e07722836d2f9593abEvan HuntORIGINAL_JAVA_ARGS=${OPENDS_JAVA_ARGS}
831f59eb43b56642b00f82e07722836d2f9593abEvan HuntORIGINAL_JAVA_HOME=${OPENDS_JAVA_HOME}
a13aa526be16869d1284256fbb2136f4d50ed1d7Evan HuntORIGINAL_JAVA_BIN=${OPENDS_JAVA_BIN}
a13aa526be16869d1284256fbb2136f4d50ed1d7Evan Hunt
a13aa526be16869d1284256fbb2136f4d50ed1d7Evan Hunt
a13aa526be16869d1284256fbb2136f4d50ed1d7Evan Hunt# Specify the script name so that we can use the specified java properties.
741ebf10047c3e32e1a0691316ec45666f003583Evan HuntSCRIPT_NAME="stop-ds"
741ebf10047c3e32e1a0691316ec45666f003583Evan Huntexport SCRIPT_NAME
741ebf10047c3e32e1a0691316ec45666f003583Evan Hunt
4eb998928b9aef0ceda42d7529980d658138698aEvan Hunt# Set environment variables
4eb998928b9aef0ceda42d7529980d658138698aEvan HuntSCRIPT_UTIL_CMD=set-full-environment-and-test-java
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntexport SCRIPT_UTIL_CMD
4eb998928b9aef0ceda42d7529980d658138698aEvan Hunt. "${INSTANCE_ROOT}/lib/_script-util.sh"
4eb998928b9aef0ceda42d7529980d658138698aEvan HuntRETURN_CODE=$?
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntif test ${RETURN_CODE} -ne 0
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntthen
feb067b25a8e33db62e2a7bf2e83bbb7f6eee845Evan Hunt exit ${RETURN_CODE}
feb067b25a8e33db62e2a7bf2e83bbb7f6eee845Evan Huntfi
feb067b25a8e33db62e2a7bf2e83bbb7f6eee845Evan Hunt
feb067b25a8e33db62e2a7bf2e83bbb7f6eee845Evan Hunt
72c86c105a7cf315036d7131a4ef408bc6227639Evan Hunt"${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} ${SCRIPT_NAME_ARG} \
72c86c105a7cf315036d7131a4ef408bc6227639Evan Hunt org.opends.server.tools.StopDS --checkStoppability "${@}"
72c86c105a7cf315036d7131a4ef408bc6227639Evan HuntEC=${?}
72c86c105a7cf315036d7131a4ef408bc6227639Evan Hunt
72c86c105a7cf315036d7131a4ef408bc6227639Evan HuntSTOPPED=1
21a7fde6ba34c62f4859a4c19de4f49ec1bab474Evan HuntEXIT_CODE=1
21a7fde6ba34c62f4859a4c19de4f49ec1bab474Evan HuntMUST_START_USING_SYSTEM_CALL=1
21a7fde6ba34c62f4859a4c19de4f49ec1bab474Evan HuntMUST_STOP_USING_SYSTEM_CALL=1
aababae79572d8c80fcec9b809671987007451c9Mark AndrewsQUIET_MODE=1
aababae79572d8c80fcec9b809671987007451c9Mark Andrews
3a0da183bb40bd120698102b20b61ef12665c09bMark Andrewsif test ${EC} -eq 98
3a0da183bb40bd120698102b20b61ef12665c09bMark Andrews#
3a0da183bb40bd120698102b20b61ef12665c09bMark Andrews# Already stopped and nothing else to do.
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt#
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Huntthen
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt STOPPED=0
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Huntelse
af21fc66447083a01e41e533fe9737ffcf21cc2dMark Andrews if test ${EC} -eq 99 -o ${EC} -eq 105
af21fc66447083a01e41e533fe9737ffcf21cc2dMark Andrews #
af21fc66447083a01e41e533fe9737ffcf21cc2dMark Andrews # Already stopped and must start locally.
af21fc66447083a01e41e533fe9737ffcf21cc2dMark Andrews #
af21fc66447083a01e41e533fe9737ffcf21cc2dMark Andrews then
e7b9603ead84761813fd4598303b8e969ab4d7acMark Andrews STOPPED=0
e7b9603ead84761813fd4598303b8e969ab4d7acMark Andrews MUST_START_USING_SYSTEM_CALL=0
cff340c9e7ac9dc926f5f1f176d973d277c1b68bEvan Hunt if test ${EC} -eq 105
cff340c9e7ac9dc926f5f1f176d973d277c1b68bEvan Hunt then
550c92405fc1df47e725f2ecbaa5154c9239fcfdMark Andrews QUIET_MODE=0
550c92405fc1df47e725f2ecbaa5154c9239fcfdMark Andrews fi
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt else
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt if test ${EC} -eq 100
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt then
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt #
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt # Stop using system call
33b8db1bb3f0aa3a39db459e6a32a1082b8dce13Evan Hunt #
19b037bcb900e75528bf6f2582d77c3f1a6d6714Evan Hunt MUST_STOP_USING_SYSTEM_CALL=0
19b037bcb900e75528bf6f2582d77c3f1a6d6714Evan Hunt else
19b037bcb900e75528bf6f2582d77c3f1a6d6714Evan Hunt if test ${EC} -eq 101 -o ${EC} -eq 106
9ffd0f0270ef06bd60b1b2754bbeefbe1da33ce7Evan Hunt then
9ffd0f0270ef06bd60b1b2754bbeefbe1da33ce7Evan Hunt #
9ffd0f0270ef06bd60b1b2754bbeefbe1da33ce7Evan Hunt # Restart using system call
77845708f756cfe921b845423be6410e26c167b7Evan Hunt #
77845708f756cfe921b845423be6410e26c167b7Evan Hunt MUST_STOP_USING_SYSTEM_CALL=0
4f9f8fa0528ce843a3bdf7993e94463508d8320eEvan Hunt MUST_START_USING_SYSTEM_CALL=0
4f9f8fa0528ce843a3bdf7993e94463508d8320eEvan Hunt if test ${EC} -eq 106
4f9f8fa0528ce843a3bdf7993e94463508d8320eEvan Hunt then
53a4e18582ae0c50f3742d2f6b684231a50be038Curtis Blackburn QUIET_MODE=0
53a4e18582ae0c50f3742d2f6b684231a50be038Curtis Blackburn fi
53a4e18582ae0c50f3742d2f6b684231a50be038Curtis Blackburn else
53a4e18582ae0c50f3742d2f6b684231a50be038Curtis Blackburn if test ${EC} -ne 102
5eab7b89825dd2ed4c0a7fc0ed45ad028170303eEvan Hunt then
5eab7b89825dd2ed4c0a7fc0ed45ad028170303eEvan Hunt exit ${EC}
5eab7b89825dd2ed4c0a7fc0ed45ad028170303eEvan Hunt fi
2b8dac99166f74532264f756f5c0b43a6b04d995Evan Hunt fi
2b8dac99166f74532264f756f5c0b43a6b04d995Evan Hunt fi
2b8dac99166f74532264f756f5c0b43a6b04d995Evan Hunt fi
2b8dac99166f74532264f756f5c0b43a6b04d995Evan Huntfi
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Huntif test ${MUST_STOP_USING_SYSTEM_CALL} -eq 0
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Huntthen
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt if test -f "${INSTANCE_ROOT}/logs/server.pid"
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt then
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt kill `cat "${INSTANCE_ROOT}/logs/server.pid"`
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt EXIT_CODE=${?}
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt if test ${EXIT_CODE} -eq 0
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt then
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt "${OPENDS_JAVA_BIN}" -Xms8M -Xmx8M org.opends.server.tools.WaitForFileDelete \
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt --targetFile "${INSTANCE_ROOT}/logs/server.pid" \
2a184ff86544cc67c36e2ce6bb3ddb5ac44684b8Evan Hunt --logFile "${INSTANCE_ROOT}/logs/errors"
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt EXIT_CODE=${?}
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt if test ${EXIT_CODE} -eq 0
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt then
501941f0b6cce74c2ff75b10aff3f230d5d37e4cEvan Hunt STOPPED=0
da49a52345d44caebc63c8ef0192daa68c068d1dMark Andrews fi
de1223830f23c2fcd343e40d0940aa591fc363b6Evan Hunt fi
de1223830f23c2fcd343e40d0940aa591fc363b6Evan Hunt else
85f89d58a50a86859c04069ea87b2b23b3325d11Evan Hunt echo "ERROR: Unable to find the server.pid file to determine the process"
85f89d58a50a86859c04069ea87b2b23b3325d11Evan Hunt echo " ID of the OpenDS process to terminate."
85f89d58a50a86859c04069ea87b2b23b3325d11Evan Hunt exit 1
40a7e85f3ee3bd66a8f87bf8af674e1e48b05396Evan Hunt fi
40a7e85f3ee3bd66a8f87bf8af674e1e48b05396Evan Huntfi
40a7e85f3ee3bd66a8f87bf8af674e1e48b05396Evan Hunt
40a7e85f3ee3bd66a8f87bf8af674e1e48b05396Evan Hunt# Delete the pid file if the server is stopped (this can occur if the process
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Hunt# has been killed using kill -9).
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Huntif test ${STOPPED} -eq 0
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Huntthen
c548cbbf6b92e4fa5c7c78114c97ef1e50b87379Evan Hunt if test -f "${INSTANCE_ROOT}/logs/server.pid"
30b7c81c13391a6886eb9d12a7f9e0472a5c1110Mark Andrews then
298ca122505a151384a3bf3f0bb0819ed60c66e2Evan Hunt rm "${INSTANCE_ROOT}/logs/server.pid"
298ca122505a151384a3bf3f0bb0819ed60c66e2Evan Hunt fi
298ca122505a151384a3bf3f0bb0819ed60c66e2Evan Huntfi
bdc7cf66ff626163801cc59b2fd25523da07d238Mark Andrews
bdc7cf66ff626163801cc59b2fd25523da07d238Mark Andrews# Now if the user wants to restart the server, try to restart it if the server
bdc7cf66ff626163801cc59b2fd25523da07d238Mark Andrews# is stopped.
bdc7cf66ff626163801cc59b2fd25523da07d238Mark Andrewsif test ${MUST_START_USING_SYSTEM_CALL} -eq 0
118bdfd8c4b4dbdd47c17afe61e506fefee9c2daMark Andrewsthen
118bdfd8c4b4dbdd47c17afe61e506fefee9c2daMark Andrews if test ${STOPPED} -eq 0
118bdfd8c4b4dbdd47c17afe61e506fefee9c2daMark Andrews then
118bdfd8c4b4dbdd47c17afe61e506fefee9c2daMark Andrews# Set the original values that the user had on the environment in order to be
58154043cca0caf03d6fc1a47ed7f24681f24762Evan Hunt# sure that the start-ds script works with the proper arguments (in particular
58154043cca0caf03d6fc1a47ed7f24681f24762Evan Hunt# if the user specified not to overwrite the environment).
cfec3165b151ed9a0b5b7d5f1609dac9ff12efe3Evan Hunt OPENDS_JAVA_ARGS=${ORIGINAL_JAVA_ARGS}
da49a52345d44caebc63c8ef0192daa68c068d1dMark Andrews OPENDS_JAVA_HOME=${ORIGINAL_JAVA_HOME}
cfec3165b151ed9a0b5b7d5f1609dac9ff12efe3Evan Hunt OPENDS_JAVA_BIN=${ORIGINAL_JAVA_BIN}
cfec3165b151ed9a0b5b7d5f1609dac9ff12efe3Evan Hunt if test ${QUIET_MODE} -eq 0
cfec3165b151ed9a0b5b7d5f1609dac9ff12efe3Evan Hunt then
da49a52345d44caebc63c8ef0192daa68c068d1dMark Andrews "${INSTANCE_ROOT}/bin/start-ds" --quiet
94315060c2b0d9deafabe72d6a0482405fd9d377Evan Hunt EXIT_CODE=${?}
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt exit ${EXIT_CODE}
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt else
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt "${INSTANCE_ROOT}/bin/start-ds"
55e5c51e661e23e24573db84114a3837817745c9Evan Hunt EXIT_CODE=${?}
62d63e5f02a5e7fcda59cf361149e3d7c78477beEvan Hunt exit ${EXIT_CODE}
62d63e5f02a5e7fcda59cf361149e3d7c78477beEvan Hunt fi
da49a52345d44caebc63c8ef0192daa68c068d1dMark Andrews fi
df925e6c66d45d960fbac0383169763967d2111cEvan Hunt#
df925e6c66d45d960fbac0383169763967d2111cEvan Hunt# The user does not want to start the server locally and it is already stopped.
df925e6c66d45d960fbac0383169763967d2111cEvan Hunt# Just exit.
a81ae06ed3081753a73e7638919673be57eaf47fEvan Hunt#
a81ae06ed3081753a73e7638919673be57eaf47fEvan Huntelse
a81ae06ed3081753a73e7638919673be57eaf47fEvan Hunt if test ${STOPPED} -eq 0
2425d8bb7ccf5dc956ad12d64d97b5a42e022930Evan Hunt then
da49a52345d44caebc63c8ef0192daa68c068d1dMark Andrews exit 0
2425d8bb7ccf5dc956ad12d64d97b5a42e022930Evan Hunt fi
740e7340c55e9f0cf80c6fbbf7e8d3c1bdeaa255Mark Andrewsfi
740e7340c55e9f0cf80c6fbbf7e8d3c1bdeaa255Mark Andrews
740e7340c55e9f0cf80c6fbbf7e8d3c1bdeaa255Mark Andrews# If we've gotten here, then we should try to stop the server over LDAP.
740e7340c55e9f0cf80c6fbbf7e8d3c1bdeaa255Mark Andrews"${OPENDS_JAVA_BIN}" ${JAVA_ARGS} ${SCRIPT_NAME_ARG} \
740e7340c55e9f0cf80c6fbbf7e8d3c1bdeaa255Mark Andrews org.opends.server.tools.StopDS "${@}"
3c7df84b2019e454f6333ca354ef709f6451a2abMark Andrews