首页 > 其他分享 >Systemd 服务管理器

Systemd 服务管理器

时间:2022-11-30 12:36:31浏览次数:75  
标签:Systemd 服务 sudo systemd systemctl nohup 进程 管理器 php


项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,变成守护进程的第一步,就是把它改成"后台任务"(background job)。传统上我们是用以下的方法来做:

&

只要在命令的尾部加上符号&,启动的进程就会成为"后台任务"。

php index.php &

"后台任务"有两个特点。

  1. 继承当前 session (对话)的标准输出(stdout)和标准错误(stderr)。因此,后台任务的所有输出依然会同步地在命令行下显示。
  2. 不再继承当前 session 的标准输入(stdin)。你无法向这个任务输入指令了。如果它试图读取标准输入,就会暂停执行(halt)。

nohup

nohup 的用途就是让提交的命令忽略 hangup 信号。只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用​​">filename 2>&1"​​来更改缺省的重定向文件名。

[root@VM_113_168_centos www]# nohup php index.php &
[2] 26047
[1]   Terminated              nohup php index.php
[root@VM_113_168_centos www]# nohup: ignoring input and appending output to ‘nohup.out’

nohup做了三件事:

  • 阻止SIGHUP信号发到这个进程。
  • 关闭标准输入。该进程不再能够接收任何输入,即使运行在前台。
  • 重定向标准输出和标准错误到文件nohup.out。

setsid

setsid中的sid指的是session id,意指以该命令运行的进程是一个新的session,因此其父进程id不属于当前终端。实际上,setsid运行的进程,其父进程id(PPID)为1(init 进程的 PID)。

[root@VM_113_168_centos www]# setsid php index.php

disown 和 screen等

还有其他方法诸如disown和screen等方法,在此不做多列举

Systemd

systemd的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd尽可能减少对shell脚本的依赖。传统sysvinit使用inittab来决定运行哪些shell脚本,大量使用shell脚本被认为是效率低下无法并行的原因

下面的命令用来启动服务。

$ sudo /etc/init.d/apache2 start # 或者 $ service apache2 start

这种方法有两个缺点。

一是启动时间长。​​init​​进程是串行启动,只有前一个进程启动完,才会启动下一个进程。

二是启动脚本复杂。​​init​​进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

Systemd 命令

# 重启系统 $ sudo systemctl reboot # 关闭系统,切断电源 $ sudo systemctl poweroff # CPU停止工作 $ sudo systemctl halt # 暂停系统 $ sudo systemctl suspend # 让系统进入冬眠状态 $ sudo systemctl hibernate # 让系统进入交互式休眠状态 $ sudo systemctl hybrid-sleep # 启动进入救援状态(单用户状态) $ sudo systemctl rescue

诸如此类的命令还有很多,也正是它超高的管理,导致了各种争论,个人建议用Supervisor,也是我们生产环境所用的

在原始的时候,我们用的也是systemd,在一次升级之后,改用了swoole来做守护进程,再后续的升级中,改成了Supervisor来做守护进程,想要学习systemd的,可以看以下资料:

1 Systemd 入门教程:命令篇

​http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html​

2 Systemd 入门教程:实战篇

​http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html​

3 Systemd 中文手册

​http://www.jinbuguo.com/systemd/systemd.html​

源码面前,了无秘密



标签:Systemd,服务,sudo,systemd,systemctl,nohup,进程,管理器,php
From: https://blog.51cto.com/zhenghongxin/5898235

相关文章

  • 新一代浪潮K1 Power服务器上市 引领中国关键计算产业发展
    新一代浪潮高端服务器旗舰产品——浪潮K1PowerK8880G3日前正式发布!新一代产品采用最新Power10处理器,全面优化系统架构设计,整机性能相较上一代产品提升70%。浪潮K1PowerK......
  • Linux NFS服务器的安装与配置
    最近用到了nfs的文件共享和数据分发,一个简单的分发步骤如下【测试通过】:1)查看NFS软件包是否安装:rpm-aqnfs-utilsportmaprpcbind2)NFS依赖于rpcbind服务,所以检查rpc服......
  • 生产环境服务器磁盘配置参考
    1.简介在“Linux系统生产环境配置指南”​​https://blog.51cto.com/waringid/5782872​​中简要说明了生产环境物理服务器的配置要求,在实际的业务环境需要综合考虑性能......
  • 如何管理无服务器计算的安全性
    1、减少无服务器权限无服务器计算的较大风险是具有比所需更多权限的功能。通过无服务器,可以通过为很多已部署的功能实施很小权限模型显著地减少攻击面。在功能的开发阶......
  • 【服务器数据恢复】nas存储服务器raid6硬盘故障离线导致磁盘阵列失效的数据恢复案例
    服务器数据恢复环境:nas存储服务器,14块硬盘组建raid6磁盘阵列。服务器故障&分析:服务器在正常运行过程中突然有硬盘出现故障离线,导致磁盘阵列失效,服务器无法正常访问了。......
  • 性能计数器数据收集服务
    Windows服务收集性能计数器的数据,将性能计数器数据写入数据库,项目虽小,其中用到了众多的开源项目Topshelf、NLog、Dapper,ASP.NETWebAPI,Newtonsoft.Jso......
  • 2010年10月全球web服务器调查
    根据netcraft的调查,2010年10月,对全球232,839,963个网站的web服务器进行了统计,这个月,netcraft在所有域名商观察到有1400万个新站点 如下图,A.........
  • 如何用 Prometheus Operator 监控 K8s 集群外服务?
    前言前面系列文章中:PrometheusOperator与kube-prometheus之一-简介-东风微鸣技术博客(ewhisper.cn)监控Kubernetes集群证书过期时间的三种方案-东风微鸣......
  • Gitee代码管理器的简便使用
    第一步:在Gitee上新建个仓库第二步:复制http路径第三步:在我的电脑上找到想要把文件上传仓库的路径第四步:在文件路径上输入cmd命令第五步:gitclonehttp地址    ......
  • web相关概念回顾以及web服务器软件_概念
    web相关概念回顾1.软件架构:1.C/S:客户端/服务器端2.B/S:浏览器/服务器2.资源分类1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源,静态资源可以......