Ubuntu系统进程管理笔记
前言
今天对前端服务器进行迁移,本来前端服务器就一台,都是放置前端静态文件的地方,应该是比较简单的。唯一的问题是由于Nginx需要给ie8浏览器个i同https访问支持,不得不对Nginx进行重新编译。编译完成后想启动一下服务,才发现没有systemctl,于是使用service命令,奇怪的是service命令无法居然无法识别nginx服务。经过一番折腾终于解决了问题。
以前这些命令一直是拿来就用,没什么深究,只有遇到了问题才知道基础的重要性。下面就对这些东西做个简单的记录。
进程管理工具
Linux进程管理常用的工具有service、systemctl、update-rc.d等。其中越来越多的发行版使用systemctl作为程序的的管理工具。问题就在于今天我所使用的Ubuntu版本是14.04,也就是还没有把systemctl作为默认的软件启动管理工具。systemctl是15.0x之后的版本才作为自带的进程管理工具的。
SysV/Upstart/systemd是什么
简单的说,他们是系统初始化时的第一个进程,也就是pid为1的进程,可以通过ps -p 1 命令来检测。
$ ps -p 1
如显示的数据类似于:
PID TTY TIME CMD
1 ? 00:00:02 systemd
若显示systemd则为systemd,显示init则为Upstart。
在第一个进程启动之后,这个进程负责启动其它设置了开机自启动的进程。这就带出了一个概念,这些开机自启或者不自启的信息存放在哪里?
在Ubuntu系统中,通过SysV管理的进程启动信息放在/etc/init.d/文件夹中,里面的文件实际上是一些shell脚本,运行这些脚本就能启动或停止这些进程。而它对应的管理工具就是update-rc.d命令。
例如要启动nginx服务,可以通过sudo update-rc.d nginx enable实现。
通过Upstart管理的进程启动信息放在/etc/init文件夹中,其中都是.conf后缀的配置文件,与其对应的命令行管理工具是initctl。我们可以通过在/etc/init中编写相应的配置文件达到启动服务的目的。
通过systemd管理的进程启动信息放在/etc/systemd/system 、 /lib/systemd/system、/var/lib/systemd 几个文件夹中,例如通过命令locate nginx.service就会得到以下的位置信息:
/etc/systemd/system/multi-user.target.wants/nginx.service
/lib/systemd/system/nginx.service
/var/lib/systemd/deb-systemd-helper-enabled/nginx.service.dsh-also
/var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/nginx.service
配套的命令行工具是systemctl。可以通过命令 sudo systemctl enable nginx.service 将服务加到开机自启动中。需要注意的是如果不是软件安装时生成的.service文件,而是自己在上述位置写相应的文件的话,需要使用systemctl daemon-reload命令重新加载新的脚本才能使用。
另一个有用的命令是service,它兼容了update-rc.d和initctl命令的功能,两种启动方式都能使用。常用命令例如service nginx status。
每台Linux服务器只能有一个系统初始化软件,从历史上说先有SysV,到Upstart,再到systemd。比较新版的Linux发行版很多都以systemd作为初始化管理软件。
systemd是在Ubuntu15.04才开始作为默认初始化程序的。
参考:
https://www.techforgeek.info/enable_disable_service_on_ubuntu.html
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1416728
https://segmentfault.com/a/1190000009723940
https://stackoverflow.com/questions/7646972/nginx-invalid-pid-number
https://gist.github.com/AJMaxwell/f6793605068813aae888216b02364d85
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
Ubuntu系统进程管理笔记的更多相关文章
- Ubuntu系统进程绑定CPU核
Ubuntu系统进程绑定CPU核 作者:chszs.版权全部,未经允许,不得转载. 博主主页:http://blog.csdn.net/chszs 本文讲述如何在Ubuntu系统中,把指定的进程绑定到 ...
- 沈逸老师ubuntu速学笔记(2)-- ubuntu16.04下 apache2.4和php7结合编译安装,并安裝PDOmysql扩展
1.编译安装apache2.4.20 第一步: ./configure --prefix=/usr/local/httpd --enable-so 第二步: make 第三步: sudo make i ...
- 沈逸老师ubuntu速学笔记(1)--安装flashplayer,配置中文输入法以及常用命令
开篇首先感谢程序员在囧途(www.jtthink.com)以及沈逸老师,此主题笔记主要来源于沈老师课程.同时也感谢少年郎,秦少.花旦等同学分享大家的学习笔记. 1.安装flash player ctr ...
- pyenv简介——Debian/Ubuntu中管理多版本Python
pyenv简介——Debian/Ubuntu中管理多版本Python MAY 21ST, 2016 12:00 AM | COMMENTS pyenv是管理Python版本的工具,它支持在多个Pyth ...
- ubuntu 软件包管理工具 dpkg,apt-get,aptitude 区别
ubuntu 软件包管理工具 dpkg,apt-get,aptitude 区别 一:dpkg dpkg 是一种比较低层的软件包安装管理工具,在安装时,不会安装软件包的依赖关系:只能安装所要求的软件包: ...
- Ubuntu软件包管理器
Ubuntu软件包管理 Ubuntu下对软件管理工具有:apt,dpkg,tasksel,aptitude等,我们常用的就是前三个工具.下面就介绍这三个工具的用法. dpkg 在Linux发展之初,安 ...
- Linux系统进程管理
Linux系统进程管理 什么是进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: 分配内存, 已分配内存的地址空间 安全属性, 进程的运行身份和权限 进程代码, 运行一个或多个的线程 进程 ...
- ubuntu包管理机制
1 ubuntu包管理机制 跟大家分享一下ubuntu的软件管理机制.如果你们有过: apt-get install 或者 apt-get update 失败的经历. 在众多的apt命令中迷失. 疑惑 ...
- Linux_系统进程管理
目录 目录 进程管理 进程管理的指令 查看进程ps指令 pgreppidof指令查pid lsof查看系统中的进程 nice指令修改进程的nice值 kill指令结束进程 top系统进程管理器任务管理 ...
随机推荐
- 使用Microsoft EnterpriseLibrary(微软企业库)日志组件把系统日志写入数据库和xml文件
这里只是说明在项目中如何配置使用微软企业库的日志组件,对数据库方面的配置请参考其他资料. 1.在项目中添加Microsoft.Practices.EnterpriseLibrary.Data.dll. ...
- 【Python】Python中子类怎样调用父类方法
python中类的初始化方法是__init__(),因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类, ...
- 【bzoj1257】[CQOI2007]余数之和sum 数论
题目描述 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值,其中k mod i表示k除以i的余数.例如j(5, 3)=3 m ...
- 关于逻辑运算符&&和||及!
&& 表示and ,|| 表示or,!表示not. And(&&):对两个Boolean表达式执行逻辑和. AndAlso(&):与AndAlso类似,关键差异 ...
- P1650 田忌赛马
题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这里取得200银币. ...
- 【题解】HNOI2018寻宝游戏
太厉害啦……感觉看到了正解之后整个人都惊呆了一样.真的很强%%% 首先要注意到一个性质.位运算列与列之间是不会相互影响的,那么我们先观察使一列满足条件的操作序列需要满足什么条件.&0时,不论之 ...
- [洛谷P3743]kotori的设备
题目大意:ことり有$n$个设备,每个设备每秒共减少$a_i$能量(也就是说每一瞬间都在减少,而不是在一个时刻突然减少),开始前有$b_i$能量,ことり还有一个充电宝,无限能量,每秒共可以提供$p$的能 ...
- 用PHP迭代器来实现一个斐波纳契数列
斐波纳契数列通常做法是用递归实现,当然还有其它的方法.这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次.注释已经写到代码中,也是相当好理解 ...
- 使用记事本创建Web服务(WebService)
学习就要从最简单最直观的地方入手. 1)打开记事本,添加如下代码: <%@ WebService Language="C#" Class="myFirstWebSe ...
- AWS nat monitor and route switch script
This script will monitor another NAT instance and take over its routes if communication with the oth ...