道一站 道一站
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于

daotoyi

静水流深
首页
  • 历史文明
  • 自我管理
  • 经济金融
  • 未来科技
  • 李笑来
  • 股票
  • 期货
  • 期权
  • 外盘
  • 量化
  • 区块
  • 认知
  • 数理
  • 收藏
  • 前端

    • JavaScript
    • TypeScript
  • 页面

    • HTML
    • CSS
  • 编程

    • C++
    • Python
    • Shell
    • 小程序开发
  • 笔记

    • 《Git》
    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
  • 技术文档
  • Linux
  • Docker
  • GitHub
  • 博客搭建
  • 效用工具
  • 周易基础
  • 奇门遁甲
  • 收藏资源
  • 学习方法
  • 实用技巧
  • 友情链接
  • 分类
  • 标签
  • 归档
关于
  • 技术文档

  • Linux

    • 127001和0000地址的区别
    • arp_route
    • CMD_ip_ifconfig
    • IP与子网掩码的关系
    • libc,glibc和libc关系
    • Linux 路由表详解及 route 命令详解
    • Linux 系统中成功恢复已删除的文件
    • Linux_boot
    • Linux_chroot
    • Linux_chroot_RecoveryPass
    • Linux_chroot_SSHlogin
    • Linux_cmd_echo
    • LInux_cmd_sed
    • Linux_FTP
    • Linux_ldconfig_PATH
    • Linux_locale
    • Linux_Login_Repeat
    • d_faillock
    • Linux_SSH
    • Linux_systemctl_systemd
      • 参考:
      • 配置参数说明:
      • 应用实例
        • 1\. systemctl添加mysql服务 "@"管理多实例
        • 2\. systemctl添加tomcat服务
        • 3\. systemctl添加jenkins服务
        • 4\. systemctl添加redmine服务
        • 5\. systemctl添加falcon服务
        • 6\. systemd管理node项目
        • 7\. systemd管理Redis
        • rsync配置文件
    • Linux_systemd_serivice
    • Linux_Terminal_HotKey
    • Linux-cmd-tar
    • LinuxTerminalHotkey
    • linux后台运行、挂起、恢复进程相关命令
    • Linux认证
    • Net
    • Nginx 常用配置清单
    • Nginx通识
    • perf分析unixbench性能
    • ping请求错误分析
    • Remote_SSH&X11(Manjaro)
    • Remote_XDMCP(Redhat6)
    • Sql Or NoSql,看完这一篇你就懂了
    • systemd
    • Unicode_UTF
    • URL
    • 开源协议
    • 线程、进程、多线程、多进程和多任务
    • 正向代理与反向代理
  • Docker

  • GitHub

  • 博客搭建

  • 效用工具

  • 技术
  • Linux
daotoyi
2022-04-30
目录

Linuxsystemctlsystemd

Linux_systemctl/systemd

[toc]

# 参考:

  • systemctl基本操作命令:https://my.oschina.net/u/3497124/blog/1439293
  • 基本用法: https://linux.cn/article-5926-1.html
  • 配置说明:https://www.cnblogs.com/jym1/p/8072964.html
  • 英文说明:https://www.freedesktop.org/software/systemd/man/systemd.service.html
  • 完整的说明(英文):https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
  • systemctl详细介绍:https://blog.csdn.net/shuaixingi/article/details/49641721
  • 关于type的介绍:https://www.cnblogs.com/ccccwork/p/6817009.html

# 配置参数说明:

  • symbol “@”
    • Template and Instance Unit Names
    • http://superuser.com/questions/393423/the-symbol-and-systemctl-and-vsftpd
    • 使用@可以参数化服务名,当一个服务在一台机器起多个实例,如果不想生成多个服务名,可以通过参数来控制。配置文件里使用%i 代理 服务名@后的内容。如systemctl start mysql (opens new window)@3306 (opens new window),%i为3306
  • [unit]
    • Description: 服务描述,打印服务的时候显示
    • After:依赖服务,必须在依赖服务启动后启动
      • syslog.target, 系统日志服务
      • network.target,网络服务
  • [service]
    • User: 启动用户(常用simple和forking)
    • Group: 启动的用户组
    • type:启动类型,
      • Type=oneshot :这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
      • Type=notify :与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
      • Type=dbus :若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
      • Type=idle :systemd会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。
      • Type=forking :systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程。
      • Type=simple :(默认值) systemd认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型。
    • ExecStart:启动方式
    • ExecStop:停止方式
    • PIDFILE: 指定pid文件,监控进程状态,type=forking时,必须指定
    • Restart:重启条件,
      • always始终重启,即使是systemctl stop关掉了,也会重启
      • on-success,成功退出时
      • on-failure,进程退出状态不正常,默认为0,可以使用SuccessExitStatus指定
      • on-abnormal,进程超时,用户取消,watchdog
      • on-watchdog,watchdog关掉进程时
      • on-abort,用户取消
      • no, 不重启,默认值
    • PrivateTmp:为进程分配单独的临时空间
  • LimitCPU/LimitNOFILE/LimitNPROC:
    • LimitCPU:限制系统CPU资源使用量;
    • LimitNOFILE:限制文件句柄资源使用量;
    • LimitNPROC:限制子进程数量
  • Install
    • WantedBy:当前服务的加载方式
  • 注意事项:
    • 在“.service”文件中使用命令的绝对路径
    • 当服务有特定的运行用户、运行环境是需要指定:user、group、environmentfile
    • 根据服务的特点调整参数的使用

# 应用实例

注意事项:

  • 在“.service”文件中使用命令的绝对路径
  • 当服务有特定的运行用户、运行环境是需要指定:user、group、environmentfile
  • 根据服务的特点调整参数的使用

# 1. systemctl添加mysql服务 "@"管理多实例

该脚本使用于启动多个mysql实例的环境,如果想管理单个MySQL进程,只需要将“%i”换成具体的参数就好(mysql单实例管理可参考:http://blog.csdn.net/shen2308/article/details/78492460)。 (opens new window)

[Unit] Description=MySQL Multi Server for instance %i After=syslog.target After=network.target

[Service] User=mysql Group=mysql Type=forking ExecStart=/usr/bin/mysqld_multi start %i ExecStop=/usr/bin/mysqld_multi stop %i Restart=always PrivateTmp=true

[Install] WantedBy=multi-user.target

#管理命令 systemctl start/stop/status/restart mysql@3306.service

# 2. systemctl添加tomcat服务

[Unit]
Description=Tomcat of rapapi After=syslog.target network.target

[Service] #指定用户 User=root Group=root Type=forking #因为tomcat使用信号管理进程,所以需要指定pid文件 PIDFile=/usr/share/apache-tomcat-7.0.72/tomcat.pid
ExecStart=/usr/share/apache-tomcat-7.0.72/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
Restart=on-failure RestartSec=10

[Install]
WantedBy=multi-user.target

管理命令: systemctl start/stop/status/restart ProcessName.service

# 3. systemctl添加jenkins服务

[Unit] Description=Jenkins Control With Resin After=syslog.target After=network.target

[Service] User=root Group=root ExecStart=/bin/bash /root/resin-3.1.12/bin/httpd.sh Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target

# 4. systemctl添加redmine服务

[Unit] Description=Redmine Control After=syslog.target After=network.target

[Service] User=redmine Group=redmine #指定虚拟环境文件 EnvironmentFile=-/home/redmine/redmine-2.5.1/rails.env WorkingDirectory=/home/redmine/redmine-2.5.1 ExecStart=/usr/local/rvm/src/rvm/rubies/ruby-2.0.0-p648/bin/ruby /home/redmine/redmine-2.5.1/script/rails server webrick -e production -p 4000

Restart=on-failure RestartSec=10

[Install] WantedBy=multi-user.target

# 5. systemctl添加falcon服务

[Unit] Description=Open Falcon Agent Service After=network.target

[Service] WorkingDirectory=/home/falcon/agent ExecStart=/home/falcon/agent/falcon-agent -c /home/falcon/agent/cfg.json >> /dev/null 2>&1 StandardOutput=null

Restart=on-failure RestartSec=15

[Install] WantedBy=multi-user.target

# 6. systemd管理node项目

[Unit] Description=Cynpmjs Manage After=network.target

[Service] User=cynpm Group=cynpm Environment=PATH=/usr/bin:/usr/local/bin:/home/cynpm/.nvm/versions/node/v6.11.5/bin WorkingDirectory=/home/cynpm/workspace/cynpm/cynpmjs ExecStart=/home/cynpm/.nvm/versions/node/v6.11.5/bin/node /home/cynpm/workspace/cynpm/cynpmjs/dispatch.js Restart=on-failure RestartSec=60

[Install] WantedBy=multi-user.target

参考: http://www.ruanyifeng.com/blog/2016/03/node-systemd-tutorial.html

# 7. systemd管理Redis (opens new window)

[Unit] Description=test_redis redis server service After=network.target

[Service] KillMode=control-group ExecStop=/bin/kill -SIGTERM $MAINPID Type=forking PIDFile=/home/adai/redis/6601/redis_6601.pid WorkingDirectory=/home/adai/redis ExecStart=/usr/bin/redis-server /home/adai/redis/test_redis_6601.conf Restart=on-failure RestartSec=300 User=adai Group=adai # 最大5000个连接数 LimitNOFILE=5032 [Install] WantedBy=multi-user.target

# rsync配置文件

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody # gid = nobody # use chroot = yes # max connections = 4 # pid file = /var/run/rsyncd.pid # exclude = lost+found/ # transfer logging = yes # timeout = 900 # ignore nonreadable = yes # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp] # path = /home/ftp # comment = ftp export area

uid = nobody gid = nobody use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [m_log] path=/data/logs/ ignore erros read only = false list = false hosts allow=10.9.12.2 hosts deny=*

说明:rsync服务只对指定ip开放连接权限,提升服务的安全性!!!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划 (opens new window),欢迎正在阅读的你也加入,一起分享。

上次更新: 2023/10/10, 14:48:21
Linux_SSH
Linux_systemd_serivice

← Linux_SSH Linux_systemd_serivice→

最近更新
01
置身事内
10-10
02
基础知识|八卦五行天干地支
10-08
03
基础知识|推算年月日时的干支
10-08
更多文章>
Theme by Vdoing | Copyright © 2021-2023 Daotoyi | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式