失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > CentOS下常用软件开机自启动脚本

CentOS下常用软件开机自启动脚本

时间:2018-10-10 03:49:16

相关推荐

CentOS下常用软件开机自启动脚本

MySQL

注意事项:

MySQL的安装路径为:/usr/local/mysql(如果不在该路径下,那么需要修改启动脚本中的basedirdatadir参数)MySQL的配置文件位置为:/etc/f

启动脚本(在/usr/local/mysql/support-files文件夹下mysql.server):

#!/bin/sh# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB# This file is public domain and comes with NO WARRANTY of any kind# MySQL daemon start/stop script.# Usually this is put in /etc/init.d (at least on machines SYSV R4 based# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.# When this is done the mysql server will be started when the machine is# started and shut down when the systems goes down.# Comments to support chkconfig on RedHat Linux# chkconfig: 2345 64 36# description: A very fast and reliable SQL database engine.# Comments to support LSB init script conventions### BEGIN INIT INFO# Provides: mysql# Required-Start: $local_fs $network $remote_fs# Should-Start: ypbind nscd ldap ntpd xntpd# Required-Stop: $local_fs $network $remote_fs# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: start and stop MySQL# Description: MySQL is a very fast and reliable SQL database engine.### END INIT INFO# If you install MySQL on some other places than /usr/local/mysql, then you# have to do one of the following things for this script to work:## - Run this script from within the MySQL installation directory# - Create a /etc/f file with the following information:# [mysqld]# basedir=<path-to-mysql-installation-directory># - Add the above to any other configuration file (for example ~/.my.ini)# and copy my_print_defaults to /usr/bin# - Add the path to the mysql-installation-directory to the basedir variable# below.## If you want to affect other MySQL variables, you should make your changes# in the /etc/f, ~/.f or other MySQL configuration files.# If you change base dir, you must also change datadir. These may get# overwritten by settings in the MySQL configuration files.basedir=datadir=# Default value, in seconds, afterwhich the script should timeout waiting# for server start. # Value here is overriden by value in f. # 0 means don't wait at all# Negative numbers mean to wait indefinitelyservice_startup_timeout=900# Lock directory for RedHat / SuSE.lockdir='/var/lock/subsys'lock_file_path="$lockdir/mysql"# The following variables are only set for letting mysql.server find things.# Set some defaultsmysqld_pid_file_path=if test -z "$basedir"thenbasedir=/usr/local/mysqlbindir=/usr/local/mysql/binif test -z "$datadir"thendatadir=/usr/local/mysql/datafisbindir=/usr/local/mysql/binlibexecdir=/usr/local/mysql/binelsebindir="$basedir/bin"if test -z "$datadir"thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec"fi# datadir_set is used to determine if datadir was set (and so should be# *not* set inside of the --basedir= handler.)datadir_set=## Use LSB init script functions for printing messages, if possible#lsb_functions="/lib/lsb/init-functions"if test -f $lsb_functions ; then. $lsb_functionselselog_success_msg(){echo " SUCCESS! $@"}log_failure_msg(){echo " ERROR! $@"}fiPATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"export PATHmode=$1 # start or stop[ $# -ge 1 ] && shiftother_args="$*" # uncommon, but needed when called from an RPM upgrade action# Expected: "--skip-networking --skip-grant-tables"# They are not checked here, intentionally, as it is the resposibility# of the "spec" file author to give correct arguments only.case `echo "testing\c"`,`echo -n testing` in*c*,-n*) echo_n= echo_c=;;*c*,*) echo_n=-n echo_c=;;*) echo_n= echo_c='\c' ;;esacparse_server_arguments() {for arg docase "$arg" in--basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'`bindir="$basedir/bin"if test -z "$datadir_set"; thendatadir="$basedir/data"fisbindir="$basedir/sbin"libexecdir="$basedir/libexec";;--datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'`datadir_set=1;;--pid-file=*) mysqld_pid_file_path=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;--service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed -e 's/^[^=]*=//'` ;;esacdone}wait_for_pid () {verb="$1" # created | removedpid="$2" # process ID of the program operating on the pid-filepid_file_path="$3" # path to the PID file.i=0avoid_race_condition="by checking again"while test $i -ne $service_startup_timeout ; docase "$verb" in'created')# wait for a PID-file to pop into existence.test -s "$pid_file_path" && i='' && break;;'removed')# wait for this PID-file to disappeartest ! -s "$pid_file_path" && i='' && break;;*)echo "wait_for_pid () usage: wait_for_pid created|removed pid pid_file_path"exit 1;;esac# if server isn't running, then pid-file will never be updatedif test -n "$pid"; thenif kill -0 "$pid" 2>/dev/null; then: # the server still runselse# The server may have exited between the last pid-file check and now. if test -n "$avoid_race_condition"; thenavoid_race_condition=""continue # Check again.fi# there's nothing that will affect the file.log_failure_msg "The server quit without updating PID file ($pid_file_path)."return 1 # not waiting any more.fifiecho $echo_n ".$echo_c"i=`expr $i + 1`sleep 1doneif test -z "$i" ; thenlog_success_msgreturn 0elselog_failure_msgreturn 1fi}# Get arguments from the f file,# the only group, which is read from now on is [mysqld]if test -x "$bindir/my_print_defaults"; thenprint_defaults="$bindir/my_print_defaults"else# Try to find basedir in /etc/fconf=/etc/fprint_defaults=if test -r $confthensubpat='^[^=]*basedir[^=]*=\(.*\)$'dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`for d in $dirsdod=`echo $d | sed -e 's/[ ]//g'`if test -x "$d/bin/my_print_defaults"thenprint_defaults="$d/bin/my_print_defaults"breakfidonefi# Hope it's in the PATH ... but I doubt ittest -z "$print_defaults" && print_defaults="my_print_defaults"fi## Read defaults file from 'basedir'. If there is no defaults file there# check if it's in the old (depricated) place (datadir) and read it from there#extra_args=""if test -r "$basedir/f"thenextra_args="-e $basedir/f"fiparse_server_arguments `$print_defaults $extra_args mysqld server mysql_server mysql.server`## Set pid file if not given#if test -z "$mysqld_pid_file_path"thenmysqld_pid_file_path=$datadir/`hostname`.pidelsecase "$mysqld_pid_file_path" in/* ) ;;* ) mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;;esacficase "$mode" in'start')# Start daemon# Safeguard (relative paths, core dumps..)cd $basedirecho $echo_n "Starting MySQL"if test -x $bindir/mysqld_safethen# Give extra arguments to mysqld with the f file. This script# may be overwritten at next upgrade.$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?# Make lock for RedHat / SuSEif test -w "$lockdir"thentouch "$lock_file_path"fiexit $return_valueelselog_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"fi;;'stop')# Stop daemon. We use a signal here to avoid having to know the# root password.if test -s "$mysqld_pid_file_path"then# signal mysqld_safe that it needs to stoptouch "$mysqld_pid_file_path.shutdown"mysqld_pid=`cat "$mysqld_pid_file_path"`if (kill -0 $mysqld_pid 2>/dev/null)thenecho $echo_n "Shutting down MySQL"kill $mysqld_pid# mysqld should remove the pid file when it exits, so wait for it.wait_for_pid removed "$mysqld_pid" "$mysqld_pid_file_path"; return_value=$?elselog_failure_msg "MySQL server process #$mysqld_pid is not running!"rm "$mysqld_pid_file_path"fi# Delete lock for RedHat / SuSEif test -f "$lock_file_path"thenrm -f "$lock_file_path"fiexit $return_valueelselog_failure_msg "MySQL server PID file could not be found!"fi;;'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_argselselog_failure_msg "Failed to stop running server, so refusing to try to start."exit 1fi;;'reload'|'force-reload')if test -s "$mysqld_pid_file_path" ; thenread mysqld_pid < "$mysqld_pid_file_path"kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL"touch "$mysqld_pid_file_path"elselog_failure_msg "MySQL PID file could not be found!"exit 1fi;;'status')# First, check to see if pid file existsif 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 0elselog_failure_msg "MySQL is not running, but PID file exists"exit 1fielse# Try to find appropriate mysqld processmysqld_pid=`pidof $libexecdir/mysqld`# test if multiple pids existpid_count=`echo $mysqld_pid | wc -w`if test $pid_count -gt 1 ; thenlog_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)"exit 5elif 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 2fi log_failure_msg "MySQL is not running"exit 3elselog_failure_msg "MySQL is running but PID file could not be found"exit 4fifi;;*)# usagebasename=`basename "$0"`echo "Usage: $basename {start|stop|restart|reload|force-reload|status} [ MySQL server options ]"exit 1;;esacexit 0

Redis

注意事项:

Redis安装路径为:/usr/local/redisRedis的配置文件路径为:/usr/local/redis/redis.conf

启动脚本:

#!/bin/bash## chkconfig: 2345 10 90 # description: Start and Stop redis PATH=/usr/local/bin:/sbin:/usr/bin:/bin # redis portREDISPORT=6379# redis-server location EXEC=/usr/local/redis/src/redis-server # redis-cli locationREDIS_CLI=/usr/local/redis/src/redis-cli PIDFILE=/var/run/redis.pid # redis config file locationCONF="/usr/local/redis/redis.conf" AUTH="root" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed." else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE exists, process is not running." else PID=$(cat $PIDFILE) echo "Stopping..." $REDIS_CLI -p $REDISPORT SHUTDOWN sleep 2 while [ -x $PIDFILE ] do echo "Waiting for Redis to shutdown..." sleep 1 done echo "Redis stopped" fi ;; restart|force-reload) ${0} stop ${0} start ;; *) echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 exit 1 esac

Nginx

注意事项:

Nginx的安装路径为:/usr/local/nginxNginx的配置文件路径为:/usr/local/nginx/conf/nginx.conf

启动脚本:

#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx start() {[ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() {echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval killall -9 nginx } restart() {configtest || return $? stop sleep 1 start } reload() {configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() {restart } configtest() {$nginx -t -c $NGINX_CONF_FILE } rh_status() {status $prog } rh_status_q() {rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac

相关常用命令

修改脚本权限

chmod 755 [脚本文件名称]chmod +x [脚本文件名称]

将脚本文件添加到服务中

chkconfig --add [脚本文件名称]# 查看服务列表chkconfig --list# 移除服务chkconfig --del [服务名称]# 设置开机在3和5级别自动启动chkconfig --level 35 nginx on

系统服务

# 防火墙# 防火墙状态systemctl status firewalld.service# 关闭防火墙systemctl stop firewalld.service# 启动防火墙systemctl start firewalld.service# 重启防火墙systemctl restart firewalld.service# 设置开机启用防火墙systemctl enable firewalld.service# 设置开机不启动防火墙systemctl disable firewalld.service# 查看服务是否开机启动systemctl is-enabled firewalld.service# 查看已启动的服务列表systemctl list-unit-files|grep enabled# 查看启动失败的服务列表systemctl--failed# 网络systemctl status network.servicesystemctl stop network.servicesystemctl start network.servicesystemctl restart network.servicesystemctl status NetworkManager.servicesystemctl stop NetworkManager.servicesystemctl start NetworkManager.servicesystemctl restart NetworkManager.service# 端口#说明:#–zone #作用域#–add-port=80/tcp #添加端口,格式为:端口/通讯协议#–permanent 永久生效,没有此参数重启后失效# 设置3306端口的udp协议允许通过防火墙firewall-cmd --zone=public --add-port=3306/udp --permanentfirewall-cmd --zone=public --remove-port=3306/udp --permanent# 设置3306端口的tcp协议允许通过防火墙firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --remove-port=3306/tcp --permanent# 查看3306端口是否成功添加到防火墙白名单中firewall-cmd --zone=public --list-ports# 查看防火墙所有信息firewall-cmd --zone=public --list-all# 限制ip访问# 对特定ip 禁止访问shh服务 (ip shh可以自己改别的 最后面的reject是禁止的意思也可以换成允许的英文,)firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"# 下面的是对特定ip允许访问8080端口firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"

进程

ps -ef | grep nginxnetstat -nltp | grep mysql

如果觉得《CentOS下常用软件开机自启动脚本》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。