linux系统添加程序 |
您所在的位置:网站首页 › linux中安装软件的命令有哪些 › linux系统添加程序 |
1 开机启动配置文件
在linux开发中会遇到需要系统开机时运行或者加载自己的程序或者脚本等。linux系统在开机时会自行加载一些配置文件,可以通过修改配置文件方式,实现开机启动自己的程序、服务等。系统启动加载的配置文件有: /etc/profile /root/.bash_profile /etc/bashrc /root/.bashrc /etc/profile.d/*.sh /etc/profile.d/lang.sh /etc/sysconfig/i18n /etc/rc.local(/etc/rc.d/rc.local) 2 修改/etc/rc.local文件 2.1 编辑rc.local vi /etc/rc.local 2.2 在exit 0 前边增加命令rc.local中使用脚本命令 chmod +x /usr/bin/test.sh /etc/init.d/mytest.sh echo 0 > /sys/class/gpio/gpio15/value 2.3 给rc.loacal权限执行如下命令: sudo chmod +x /etc/rc.local 3 /etc/profile.d/下自启动系统启动时会自动执行/etc/profile.d/目录下的所有shell脚本,因此,只需要将自己的脚本放到/etc/profile.d/目录下,即可实现脚本开机运行。 4 chkconfig配置开机自启1.将脚本文件移动到/etc/init.d/或者/etc/rc.d/init.d/目录下,前者是后者的连接。 2.脚本文件前面必须添加如下三行代码,否侧会提示chkconfig不支持。 #!/bin/sh //告诉系统使用的shell #chkconfig: 35 20 80 //分别代表运行级别,启动优先权,关闭优先权(必须有) #description: http server //描述文件,依据脚本功能描述3.修改脚本的权限 chmod +x /etc/rc.d/init.d/test.sh4.添加开机自启动。 cd /etc/rc.d/init.d chkconfig --add test.sh chkconfig test.sh on可以在脚本中添加启动日志记录: /bin/echo $(/bin/date +%F_%T) >> /var/log/test.log5.其他命令 chkconfig test.sh off //关闭开机自启 chkconfig --del test.sh //删除开机自启 chkconfig --list test.sh //查看开启自启配置5 systemctrl开机自启服务 对于支持 systemd的软件,在安装的时候,会自动在/usr/lib/systemd/system目录添加一个*.service的配置文件。在开机的时候systemd只执行/etc/systemd/system目录里面的配置文件。这样就可以通过修改或者增加该目录下的配置文件,实现对开机服务的配置。 5.1 查看配置文件Description——给出当前服务的简单描述 After——表示本服务启动在某服务之后 Before——表示本服务启动在某服务之前 Wants——弱依赖关系,如果依赖的服务启动失败或者停止运行,不影响本服务的执行 Requires——强依赖,如果依赖的服务程序启动失败或者停止、异常退出,本服务也退出 这里的After和Before只涉及启动顺序,不涉及依赖关系。 5.2.2 [Service]字段EnvironmentFile——指定当前服务的环境参数文件。该文件内部的key=value键值对,可以用$key的形式,在当前配置文件中获取。 ExecStart——定义启动进程时执行的命令。 ExecReload——重启服务时执行的命令 ExecStop——停止服务时执行的命令 ExecStartPre——启动服务之前执行的命令 ExecStartPost——启动服务之后执行的命令 ExecStopPost——停止服务之后执行的命令 所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如,EnvironmentFile=-/etc/sysconfig/xxx(注意等号后面的那个连词号),就表示即使/etc/sysconfig/xxx文件不存在,也不会抛出错误。 Type——定义启动类型,可以设置如下值: simple(默认值):ExecStart关键字启动的进程为主进程 forking:ExecStart关键字将以fork()方式启动,此时父进程将会退出,子进程将成为主进程 oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 dbus:类似于simple,但会等待 D-Bus 信号后启动 notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 RemainAfterExit——进程退出以后,服务仍然保持执行。一旦使用systemctl stop命令停止服务,ExecStop指定的命令就会执行。 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:不管是什么退出原因,总是重启 RestartSec——Systemd 重启服务之前,需要等待的秒数。 对于守护进程,推荐Restart的值设为on-failure。对于允许发生错误退出的服务,可以设为on-abnormal。 5.2.2 [Service]字段WantedBy——表示该服务所在的 Target。 multi-user.target:表示多用户命令行状态; graphical.target:表示图形用户状态,它依赖于multi-user.target。 Target 也有自己的配置文件,执行 systemctl cat multi-user.targetRequires——要求和basic.target一起运行。 Conflicts——冲突字段。如果rescue.service或rescue.target正在运行,multi-user.target就不能运行,反之亦然。 After——如果basic.target 、 rescue.service、 rescue.target有启动,则multi-user.target在他们之后启动。 AllowIsolate——允许使用systemctl isolate命令切换到multi-user.target。 5.3 systemctl命令 sudo systemctl cat xxx.service # 查看服务配置文件 sudo systemctl start xxx # 启动服务 sudo systemctl status xxx # 查看服务状态 sudo systemctl stop xxx # 停止服务 sudo systemctl kill xxx # 杀死服务(强制结束) sudo systemctl restart xxx # 重启服务 sudo systemctl get-default # 获取默认启动的Target sudo systemctl daemon-reload # 重新加载配置文件 sudo systemctl restart xxx # 重启相关服务Loaded——配置文件的位置,是否设为开机启动 Active——表示正在运行 Main PID——主进程ID Status——由应用本身(这里是 httpd )提供的软件当前状态 CGroup——应用的所有子进程 日志块——应用的日志
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |