CentOS下常用软件开机自启动脚本
MySQL
注意事项:
- MySQL的安装路径为:
/usr/local/mysql
(如果不在该路径下,那么需要修改启动脚本中的basedir
和datadir
参数)- MySQL的配置文件位置为:
/etc/my.cnf
启动脚本(在/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/my.cnf 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/my.cnf, ~/.my.cnf 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 my.cnf. # 0 means don't wait at all # Negative numbers mean to wait indefinitely service_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 defaults mysqld_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/bin elsebindir="$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_functions elselog_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 my.cnf 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/my.cnfconf=/etc/my.cnfprint_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/my.cnf" thenextra_args="-e $basedir/my.cnf" 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`.pid elsecase "$mysqld_pid_file_path" in/* ) ;;* ) mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;;esac ficase "$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 my.cnf 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/redis
- Redis的配置文件路径为:
/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 port REDISPORT=6379# redis-server location EXEC=/usr/local/redis/src/redis-server # redis-cli location REDIS_CLI=/usr/local/redis/src/redis-cli PIDFILE=/var/run/redis.pid # redis config file location CONF="/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/nginx
- Nginx的配置文件路径为:
/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.service
systemctl stop network.service
systemctl start network.service
systemctl restart network.servicesystemctl status NetworkManager.service
systemctl stop NetworkManager.service
systemctl start NetworkManager.service
systemctl restart NetworkManager.service# 端口
#说明:
#–zone #作用域
#–add-port=80/tcp #添加端口,格式为:端口/通讯协议
#–permanent 永久生效,没有此参数重启后失效
# 设置3306端口的udp协议允许通过防火墙
firewall-cmd --zone=public --add-port=3306/udp --permanent
firewall-cmd --zone=public --remove-port=3306/udp --permanent
# 设置3306端口的tcp协议允许通过防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-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 nginx
netstat -nltp | grep mysql
CentOS下常用软件开机自启动脚本相关推荐
- ubuntu18.04下设置软件开机自启动
1.去掉开机自启动,使开机后不需要输入密码就可以自动进入系统 系统设置---用户账户---选择一个账户----点击右上角解锁后---打开自动登录---点击右上角锁定 2.完成开机自启动脚本 (1).要 ...
- centos下实现程序开机自启动(tomcat为例)
vim /etc/rc.d/rc.local 打开后用下文覆盖即可 ------------------------------------------------------------------ ...
- CentOS下实现postgresql开机自启动
编辑/etc/rc.d/rc.local su -c '/opt/pgsql9.1/bin/pg_ctl start -D /usr/local/pgsql/data -l serverlog' po ...
- 【记录】我的一个Centos开机自启动脚本的制作
原文地址: http://www.2cto.com/os/201306/220559.html 我的一个Centos开机自启动脚本的制作 一.切换到/etc/init.d/ 二.制作sh脚本 vi a ...
- bash 脚本中激活conda环境_ubuntu18.10目标检测算法环境部署+开机自启动脚本创建screen下的web服务...
内容概要 cuda+cudnn+python环境安装 ubuntu18的开机自启动脚本 screen服务开启 以我个人的实践来看,把python开发的算法封装成webserver的服务供前端程序调用是 ...
- Linux下常用软件压缩包方式安装
Linux下常用软件压缩包方式安装 特别说明:以下需要安装的软件,下载相应压缩包后均上传至服务器的/opt/目录下 1.JDK安装 下载JDK 解压JDK tar -zxvf jdk-8u211-li ...
- systemd下supervisord服务开机自启动以及注意事项
systemd 下supervisord服务开机自启动 centos7 开机自启动脚本: #vim /lib/systemd/system/supervisord.service# superviso ...
- Linux设置开机自启动脚本
这里介绍两种Linux开机自启动脚本的方式 也可用于开机自启动软件(把软件的启动写成脚本,然后再让脚本开机自启动即可) 方式1:/etc/profile.d/ 把自启动脚本放在/etc/profile ...
- linux开发板开机自启动脚本,linux 添加开机自启动脚本
Linux设置服务开机自动启动的方式有好多种,这里介绍一下通过chkconfig命令添加脚本为开机自动启动的方法. 1. 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容 ...
最新文章
- 解决Ubuntu Adobe Reader 菜单栏空白
- 【深度学习篇】--神经网络中解决梯度弥散问题
- Spring Boot 异步请求和异步调用,一文搞定!
- python编写的程序大全_Python开发技术大全
- s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(一 硬件驱动层)
- 国产杀毒软件也开始支持虚拟化
- 《2018华为92家核心供应商及其供应产品》
- bodymovin导出没有html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.5.3+使用教程
- bat批量修改文件后缀名
- 电力英语计算机C级多少分,中级工程师英语加权分多少
- 测试用例设计——错误猜测法
- 题解 DTOJ #1071. 国王小C kingdom
- win10睡眠按啥键唤醒_win10关闭屏幕后无法唤醒怎么办?电脑黑屏只能重启的解决方法...
- python爬取b站弹幕_如何爬取B站弹幕
- EOS 一周回顾(11.25-12.1)
- Latex实践:一个零Latex基础的术渣花了一天半的时间用Latex完成一篇SCI论文编辑
- 频谱、频谱密度、功率谱密度、能量谱密度
- 7. 常见网络攻击欺骗手段与防护
- 计算机系班级未来展望,大学生班长对班级未来的展望.doc
- 华为数字化转型规划“三阶十二步法”