翻译自:http://www.thegeekstuff.com/2011/06/chkconfig-examples/ 注意:service的安装目录在/etc/rc.d/init.d下,/etc/init.d 是/etc/rc.d/init.d的链接。 chkconfig命令用来安装,查看或修改 services随系统启动的启动选项的设置。本文章包含了7个实例来解释如何使用chkconfig命令。 1 在shell脚本中检查service的启动选项的设置 当你执行chkconfig加service名字,如果service被配置为自动启动,则它将返回true。下列的代码段显示了如何在脚本中检查一个service是否被配置为自动启动。 # vi check.sh chkconfig network && echo "Network service is configured" chkconfig junk && echo "Junk service is configured" # ./check.sh Network service is configured 你也可以特别地查看它是否配置为在某个run level自动启动。 # vi check1.sh chkconfig network --level 3 && echo "Network service is configured for level 3" chkconfig network --level 1 && echo "Network service is configured for level 1" # ./check1.sh Network service is configured for level 3 2 查看所有的services的启动选项的设置 --list选项显示所有的services的启动选项的配置状态。 # chkconfig --list abrtd 0:off 1:off 2:off 3:on […]
View Details错误:-bash: ./startup.sh: Permission denied 解决办法: 用命令chmod 修改一下Tomcat的bin目录下的.sh权限就可以了 如chmod u+x *.sh 在此执行,OK了。 from:https://blog.csdn.net/hzw2312/article/details/50247467
View Details下载安装JDK 卸载原装的OpenJDK(如果有)
1 2 3 4 5 6 |
# 查看是否安装Java java -version # 查看Java的安装包信息 rpm -qa | grep java # 卸载原装Java,<java_package>为查找到的安装包信息 rpm -e --nodeps <java_package> |
OpenJDK是JDK的开源版本,Linux使用yum源安装的JDK都是这个版本,建议使用OracleJDK代替OpenJDK。 我这里使用的是最小化安装,所以就没有自带JDK了。 下载OracleJDK,官网下载地址: http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-i586.tar.gz
1 2 3 4 |
# 创建安装目录 mkdir -p /usr/local/java # 解压 tar -xzvf jdk-8u151-linux-i586.tar.gz -C /usr/local/java |
配置JAVA环境变量:
1 |
vi /etc/profile |
在/etc/profile文件末尾添加以下几行配置,注意第二行的最前面的“.”指的是当前路径,不是手误。还有JAVA_HOME目录的路径尽量靠过来,避免手残,敲错了找半天。
1 2 3 |
export JAVA_HOME=/usr/local/java/jdk1.8.0_151 export CLASSPATH=.:$JAVA_HOME/lib/tool.jar:$JAVA_HOME/lib/dt.jar export PATH=$PATH:$JAVA_HOME/bin |
使用source命令让配置生效
1 |
source /etc/profile |
下载并安装Tomcat 从清华大学的镜像站下载会快一点: https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz 因为Tomcat是Java写的,所以只要有了JRE就可以“一次编译到处运行”。so,Tomcat解压即可使用。 解压
1 |
tar -xzvf apache-tomcat-8.5.23.tar.gz -C /usr/local/java |
配置Tomcat的环境变量 在/etc/profile文件后再追加一条TOMCAT的环境变量
1 2 |
# 在/etc/profile文件末尾追加TOMCAT的环境变量 export CATALINA_HOME=/usr/local/java/apache-tomcat-8.5.23 |
CATALINA是Tomcat的启动程序,Tomcat的启动脚本都是使用CATALINA_HOME作为变量,所以这里我们要设置CATALINA_HOME 使用source命令完成是配置生效
1 |
source /etc/profile |
将Tomcat配置为服务 将Tomcat配置为系统服务后,就方便使用service命令来启动或关闭Tomcat服务 省的每次启动后还要到tomcat的bin目录下找startup脚本
1 2 3 4 5 |
# 把tomcat的脚本文件拷一份到/etc/init.d目录 cp /usr/local/java/apache-tomcat-8.5.23/bin/catalina.sh /etc/init.d/tomcat8 # 并把改脚本授权给所有用户执行 chmod 755 /etc/init.d/tomcat8 |
拷贝的脚本并不能直接使用,还需要修改添加一些配置。
1 |
vi /etc/init.d/tomcat8 |
添加chkconfig和description两行注释。有这两行注释才能支持chkconfig命令配置服务; 同时加上JAVA_HOME和CATALINA_HOME两个变量的声明。
1 2 3 4 5 |
#chkconfig: 2345 10 90 #description: tomcat8 service export JAVA_HOME=/usr/local/java/jdk1.8.0_151 export CATALINA_HOME=/usr/local/java/apache-tomcat-8.5.23 |
这里配置的2345指的是2345这4个运行级别会开机自启动,10是启动优先级,90是关闭优先级,优先级的值为0-99,越小优先级越高。 前面在/etc/profile文件配置中的环境变量只会在shell登录后执行,开机的过程中并不会加载/etc/profile,但是tomcat的启动脚本中需要这两个变量,所以需要在启动脚本中加入这两个变量。 使用chkconfig --add命令添加服务
1 |
[root@localhost ~]# chkconfig --add tomcat8 |
配置完成后Tomcat服务即可开机自启动 同时还可以使用service tomcat8 start和service tomcat8 stop命令来启动和停止tomcat服务。 配置防火墙打开8080端口并访问测试
1 2 |
# 对内网网段,打开8080端口 iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 8080 -j ACCEPT |
网络的配置由实际的环境决定 物理机访问测试: from:https://www.cnblogs.com/123hll/p/9640295.html
View Detailswindows: set java_home:查看JDK安装路径 java -version:查看JDK版本 linux: whereis java which java (java执行路径) echo $JAVA_HOME echo $PATH from:https://blog.csdn.net/Xin7Xin/article/details/86304542
View DetailsUbuntu是一个Linux操作系统,修改密码和用户名是有危险的动作,请谨慎修改。 Ubuntu更改密码步骤: 1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! 2、sudo passwd user(user 是对应的用户名) 3、输入新密码,确认密码。 4、修改密码成功,重启,输入新密码进入Ubuntu。 Ubuntu更改用户名步骤: 1、进入Ubuntu,打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! 2、gedit /etc/passwd ,找到代表你的那一行,修改用户名为新的用户名。 注意:只修改用户名!后面的全名、目录等不要动! 3、gedit /etc/shadow,找到代表你的那一行,修改用户名为新用户名 4、gedit /etc/group,你应该发现你的用户名在很多个组中,全部修改! 5、修改完,保存,重启。 注意:修改的时候要格外小心,不要打错一个字母。 提示:如果你要修改密码和用户名的话,请先修改密码,重启后,再修改用户名,重启。如果你先修改用户名,再修改密码的话,可能会导致你登录不了Ubuntu。 from:https://blog.csdn.net/qq_28959531/article/details/78989635
View DetailsLinux chkconfig命令用于检查,设置系统的各种服务。 这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。 语法
1 |
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] |
参数: --add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。 --del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。 --level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。 实例 列出chkconfig所知道的所有命令。
1 |
# chkconfig -list |
开启服务。
1 2 |
# chkconfig telnet on //开启Telnet服务 # chkconfig --list //列出chkconfig所知道的所有的服务的情况 |
关闭服务
1 2 |
# chkconfig telnet off //关闭Telnet服务 # chkconfig -list //列出chkconfig所知道的所有的服务的情况 |
from:https://www.runoob.com/linux/linux-comm-chkconfig.html
View Details第一种开机执行命令法: 直接修改/etc/rc.d/rc.local文件 编辑文件/etc/rc.d/rc.local vi /etc/rc.d/rc.local 比如要将zookeeper添加为开机自启动就在最后加上“/usr/local/zookeeper-3.4.5/bin/zkServer.sh start” 配置好之后,重启centos,会发现命令被执行了。前提条件是当前机器环境变量中有java命令即$JAVA_HOME/bin的路径,否则zookeeper也启动不了。 Bash
1 2 3 4 5 6 7 8 9 10 11 |
[root@zookeeper ~]# vim /etc/rc.d/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local # /usr/local/zookeeper-3.4.5/bin/zkServer.sh start |
第二种服务自启动法: 这次换个jetty吧 1、进入到/etc/rc.d/init.d目录下,新建一个jetty脚本 Bash
1 |
vi /etc/rc.d/init.d/jetty |
将以下脚本写入文件中,可以看出这是一个case语句判断,当我们使用"service jetty start"启动服务的时候"start"参数就会变成$1传入下面的脚本,从而做出对应的操作。 # chkconfig: 345 99 99 (这个比较有意思,345代表在设置在那个level中是on的,如果一个都不想on,那就写一个横线"-",比如:chkconfig: – 99 99。后面两个数字当然代表S和K的默认排序号啦,基本都写99,排后面启动安全保险) Bash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash #chkconfig: 345 99 99 #description:jetty server #processname:jetty JETTY_HOME=/app/jetty9_4_8 case $1 in start) su root $JETTY_HOME/bin/jetty.sh start;; stop) su root $JETTY_HOME/bin/jetty.sh stop;; check) su root $JETTY_HOME/bin/jetty.sh check;; restart) su root $JETTY_HOME/bin/jetty.sh restart;; *) echo "require start|stop|check|restart" ;; esac |
2、最后保存jetty文件后别忘了设置文件的执行权限 Bash
1 |
chmod +x jetty |
3、至此服务已经创建好了,可以用"service jetty start"来启动jetty了,但我们要设置自启动还需要添加到chkconfig来管理 Bash
1 2 3 |
chkconfig --add jetty chkconfig --list jetty |
看到3是启动状态就说明在文本界面启动方式下该服务已经设置为自启动了,5是图形化界面 如果不是启动状态需要用命令开启自启动 Bash
1 2 3 |
chkconfig --level 345 jetty on chkconfig --list jetty |
这样就没问题了。 from:https://blog.csdn.net/e_wsq/article/details/79885180
View Details一、CentOS7添加自定义脚本服务说明 在CentOS7下,已经不再使用chkconfig命令管理系统开机自启动服务和条件自定义脚本服务了,而是使用管理unit的方式来控制开机自启动服务和添加自定义脚本服务。在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等。这里介绍自定义脚本服务,如果想把自定义的脚本变成服务进程,都需要写对应的service配置文件,这样才能被unit所管理(注意:自定义开机自启动服务的.service配置文件必须放在/usr/lib/systemd/system这个目录下面)。服务类别又分为服务又分为系统服务(system)和用户服务(user)。 系统服务:开机不登陆就能运行的程序(常用于开机自启)。 用户服务:需要登陆以后才能运行的程序。 二、编写.service配置文件说明 1、[unit]区块:设置管理启动顺序与依赖关系 Description=服务描述 给出当前服务的简单描述 Documentation=路径或url 给出文档位置 After=服务.target或服务.service 定义在某些服务之后启动。例如sshd服务启动必须在network.target sshd-keygen.service服务开启之后才能启动,可以使用如下命令查看sshd服务的配置 cat /usr/lib/systemd/system/sshd.service Before=服务.target 定义在某些服务之前启动 Wants=服务.service 弱依赖,表示等号填写服务启动或失败,不影响此配置文件服务的启动 Requires=服务.service 强依赖,表示等号填写服务启动或失败,那么此配置文件的服务将启动失败 注意:如果After、Before、Wants、Requires等号后面需要填写多个服务可以用空格隔开。After和Before字段只涉及启动顺序,不涉及依赖关系。Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。 2、[Service]区块:设置启动行为 •启动命令 ExecStart=命令 定义启动进程时执行的命令 ExecReload=命令 重启服务时执行的命令 ExecStop=命令 停止服务时执行的命令 ExecStartPre=命令 启动服务之前执行的命令 ExecStartPost=命令 启动服务之后执行的命令 ExecStopPost=命令 停止服务之后执行的命令 所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。例如:ExecStop=-/bin/sh /server/scripts/xx.sh •启动类型 Type字段定义启动类型。它可以设置的值如下: simple(默认值) ExecStart字段启动的进程为主进程 forking ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行) oneshot 类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 dbus 类似于simple,但会等待 D-Bus 信号后启动 notify 类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 idl 类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 •重启行为 KillMode字段,定义Systemd如何停止服务,它可以设置的值如下 control-group(默认值) 当前控制组里面的所有子进程,都会被杀掉 process 只杀主进程 mixed 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 none 没有进程会被杀掉,只是执行服务的 stop 命令 Restart字段,定义了服务退出后,Systemd的重启方式,它可以设置的值如下 no(默认值) 退出后不会重启 on-success 只有正常退出时(退出状态码为0),才会重启 on-failure 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 on-abnormal 只有被信号终止和超时,才会重启 on-abort 只有在收到没有捕捉到的信号终止时,才会重启 on-watchdog 超时退出,才会重启 always 不管是什么退出原因,总是重启 •service区块的其他一些字段 […]
View Details在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的。
1 2 3 4 5 6 7 |
#!/bin/bash #changedir.sh cd /home/firefox pwd |
我仔细一想,我执行的时候是./changedir.sh来执行的,这样执行的话终端会产生一个子shell,子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化。那么怎么验证上面的猜想呢?看下面的代码
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash #changedir.sh history cd /home/firefox sleep 1 pwd |
首先按照 ./changedir.sh执行,这时候终端没有切换目录,history执行的结果是空的,说明子shell里面没有历史命令(这是肯定的)。然后按照 source changedir.sh执行,这时候就是直接在终端的shell执行脚本了,没有生成子shell,执行的结果就是输出历史命令,并且切换了目录。 from:https://blog.csdn.net/firefoxbug/article/details/7317279
View Details