前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux系统管理及安全管理——systemctl/systemd

linux系统管理及安全管理——systemctl/systemd

作者头像
阿dai学长
发布2019-04-03 10:29:43
5.5K0
发布2019-04-03 10:29:43
举报
文章被收录于专栏:阿dai_linux

参考:

配置参数说明:

  • symbol “@”
  • [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)。

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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服务

代码语言:javascript
复制
[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项目

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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配置文件

代码语言:javascript
复制
# /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({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/03/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考:
  • 配置参数说明:
  • 应用实例
    • 1. systemctl添加mysql服务 "@"管理多实例
      • 2. systemctl添加tomcat服务
        • 3. systemctl添加jenkins服务
          • 4. systemctl添加redmine服务
            • 5. systemctl添加falcon服务
              • 6. systemd管理node项目
                • 7. systemd管理Redis
                  • rsync配置文件
                  相关产品与服务
                  云数据库 SQL Server
                  腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档