'restart') # Stop the service and regardless of whether it was # running or not, start it again. if $0 stop $other_args; then $0 start $other_args else log_failure_msg "Failed to stop running server, so refusing to try to start." exit 1 fi ;;
服务脚本reload选项
首先,判断pid文件的长度是否为0,如果不为0,则将该文件中的值设置为mysqld_pid变量的值。
然后对该进程执行kill -HUP操作。
kill -HUP pid pid 是进程标识。如果想要更改配置而不需停止并重新启动服务,请使用该命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。 根据约定,当您发送一个挂起信号(信号 1 或 HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。
如果pid文件的长度为0,则输出"MySQL PID file could not be found!"。
'reload'|'force-reload') if test -s "$mysqld_pid_file_path" ; then read mysqld_pid < "$mysqld_pid_file_path" kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL" touch "$mysqld_pid_file_path" else log_failure_msg "MySQL PID file could not be found!" exit 1 fi ;;
服务脚本status选项
首先,判断pid文件长度是否为0,如果不是,则读取该文件中的值,并判断pid对应的进程是否运行正常,
如果运行正常,则输出"MySQL running"
如果不正常,则输出"MySQL is not running, but PID file exists"
如果pid文件的长度为0,则试图通过mysqld的启动命令来获取其pid,
这个时候,可能存在一个mysqld程序启动了多个实例,这会导致pid_count=`echo $mysqld_pid | wc -w`大于1。
这个时候,会输出"Multiple MySQL running but PID file could not be found"信息,并退出脚本。
如果mysqld_pid为空,则会继续判断"$lock_file_path"是否存在,如果存在,
则会输出"MySQL is not running, but lock file ($lock_file_path) exists"信息。
如果"$lock_file_path"不存在,则会输出"MySQL is not running"信息。
如果mysqld_pid等于1,则会输出"MySQL is running but PID file could not be found"信息。
'status') # First, check to see if pid file exists if test -s "$mysqld_pid_file_path" ; then read mysqld_pid < "$mysqld_pid_file_path" if kill -0 $mysqld_pid 2>/dev/null ; then log_success_msg "MySQL running ($mysqld_pid)" exit 0 else log_failure_msg "MySQL is not running, but PID file exists" exit 1 fi else # Try to find appropriate mysqld process mysqld_pid=`pidof $libexecdir/mysqld` # test if multiple pids exist pid_count=`echo $mysqld_pid | wc -w` if test $pid_count -gt 1 ; then log_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)" exit 5 elif test -z $mysqld_pid ; then if test -f "$lock_file_path" ; then log_failure_msg "MySQL is not running, but lock file ($lock_file_path) exists" exit 2 fi log_failure_msg "MySQL is not running" exit 3 else log_failure_msg "MySQL is running but PID file could not be found" exit 4 fi fi ;;
服务脚本其它选项
如果脚本的第一个参数不是上述几个选项,则会输出Usage信息。