美文网首页
在Linux上部署程序

在Linux上部署程序

作者: 土豆吞噬者 | 来源:发表于2019-12-29 21:47 被阅读0次

    nohup &

    程序在Linux上运行时,如果关闭session,程序会因为收到SIGHUP信号结束,使用nohup可以免疫该信号。如果使用Ctrl+C,程序会因为收到SIGINT信号结束,使用&可以免疫该信号。

    nohup和&常常一起使用,这个时候会同时免疫SIGHUP和SIGINT信号:

    nohup command &
    

    systemd

    systemd是Linux系统的第一个进程,使用systemd可以创建服务来运行程序,systemctl是systemd的主命令,可以用来管理服务,下面是常见的systemctl命令:

    # 启动服务
    systemctl start servicename
    
    # 停止服务
    systemctl stop servicename
    
    # 重启服务
    systemctl restart servicename
    
    # 杀死一个服务的所有子进程
    systemctl kill servicename
    
    # 重新加载一个服务的配置文件
    systemctl reload servicename
    
    # 开机启动该服务
    systemctl enable servicename
    
    # 开机不启动该服务
    systemctl disable servicename
    
    # 查看服务当前状态
    systemctl status servicename
    

    service配置文件存在以下三个文件夹中,优先级依此降低:

    • /etc/systemd/system
    • /run/systemd/system
    • /usr/lib/systemd/system或/lib/systemd/system

    service配置文件通常由3段组成,分别是[Unit],[Unit的类型:Service等],[Install]。

    [Unit]常见参数:

    • Description:描述信息。
    • After:表明在哪个Unit后面启动。
    • Before:表明在哪个Unit前面启动。
    • Requires:强依赖的Unit,如果这些Unit没启动,那么该Unit也不会启动。
    • Wants:弱依赖的Unit,启动该Unit后最好还启动哪些Unit。
    • Conflicts:与哪些Unit冲突,如果这些Unit启动了,那么该Unit不启动。

    [Service]常见参数:

    • ExecStart:启动服务执行的命令。
    • ExecStop:停止服务执行的命令。
    • ExecReload:重新加载服务执行的命令。
    • ExecStartPre:启动服务之前执行的命令。
    • ExecStartPost字段:启动服务之后执行的命令。
    • ExecStopPost字段:停止服务之后执行的命令。
    • RestartSec:表示 Systemd 重启服务之前,需要等待的秒数,默认是100毫秒。
    • RemainAfterExit:如果设定为yes,表示进程退出以后,服务仍然保持执行。
    • Type:启动类型,它可以设置为下面的值:
      • simple(默认值):ExecStart字段启动的进程为主进程。
      • forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
      • oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务。
      • dbus:类似于simple,但会等待 D-Bus 信号后启动。
      • notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务。
      • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合。
    • Restart:定义了服务退出后的重启方式,它可以设置为下面的值:
      • no(默认值):退出后不会重启。
      • on-success:只有正常退出时(退出状态码为0),才会重启。
      • on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。
      • on-abnormal:只有被信号终止和超时,才会重启。
      • on-abort:只有在收到没有捕捉到的信号终止时,才会重启。
      • on-watchdog:超时退出,才会重启。
      • always:不管是什么退出原因,总是重启。
    • KillMode:定义了systemd如何停止服务,它可以设置为下面的值:
      • control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。
      • process:只杀主进程。
      • mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号。
      • none:没有进程会被杀掉,只是执行服务的 stop 命令。

    [Install]常见参数:

    • WantedBy:表示该服务所在的Target,Target的含义是服务组,表示一组服务,默认的启动Target为multi-user.target。

    hello.service:

    [Unit]
    Description=hello world
    
    [Service]
    Type=simple
    ExecStart=/bin/hello
    
    [Install]
    WantedBy=multi-user.target
    

    相关文章

      网友评论

          本文标题:在Linux上部署程序

          本文链接:https://www.haomeiwen.com/subject/ksyuoctx.html