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系统进程管理器任务管理 ...
随机推荐
- 九度OJ--1163(C++)
#include <iostream>#include <vector> using namespace std; int main() { int n; while(cin& ...
- sed-awk命令详解
第2章 ***********sed***********. 1目 录 2.1 -------sed命令小结及小结图---- 1 2.2 -------第几行---------- 2 2.3 - ...
- [leetcode-644-Maximum Average Subarray II]
Given an array consisting of n integers, find the contiguous subarray whose length is greater than o ...
- DFS实现模板
以如下图的无向图G4为例,进行图的深度优先搜索: 假设从顶点v1出发进行搜索,在访问了顶点v1之后,选择邻接点v2.因为v2未曾访问,则从v2出发进行搜索.依次类推,接着从v4 .v8 .v5出发进行 ...
- 超像素 superpixels 是什么东西
毕业设计要做图像分割 识别什么的. 看论文看到 superpixels 开始脑补是 像素插值算出来的 后来越看越不想,搜索发现根本是另外一回事 http://blog.sina.com.cn/s/b ...
- Android Service 服务(二)—— BroadcastReceiver
(转自:http://blog.csdn.net/ithomer/article/details/7365147) 一. BroadcastReceiver简介 BroadcastReceiver,用 ...
- esayui combotree 只能选择子节点
esayui combotree 只能选择子节点用onBeforeSelect:参数是node,节点被选中之前触发,返回false取消选择动作. 网上找了好多都没一个可用的,要想知道他是子节点还是根节 ...
- Delphi中取得程序版本号
Delphi做的程序,如果想包含版本信息, 必须在Delphi的集成编辑环境的菜单“Project/Options/Version Info”里面添加版本信息.即在Version Info 选项卡中选 ...
- BZOJ4668 冷战(并查集)
显然可以用LCT维护kruskal重构树.或者启发式合并维护kruskal重构树的倍增数组虽然多了个log也不一定比LCT慢吧. 当然这里的kruskal重构树几乎只是把树上的边权换成了点权,并不重要 ...
- P2574 XOR的艺术
题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的01串. 2. 给定一个范围[l,r ...