Linux常用命令
用户及用户组相关命令:
用户: useradd / userdel / usermod
用户组: groupadd / groupdel
用户账号信息: id
密码: passwd / chage
用户切换: su / sudo / visudo
登录账号查询: w / whoami / users / last / lastb / lastlog
用户、组及权限
新增用户: useradd [options] USERNAME
创建时可以指定的选项有:
-u:UID; -g:基本组ID; -G:附加组;
-d:家目录; -s:默认shell; -r:系统用户;
默认的创建选项用: useradd -D 查询;
删除用户: userdel [options] USERNAME
使用-r, --remove选项,将用户关联的几个目录(家/邮件目录一并删除);
修改用户属性 :usermod [options] USERNAME
属性包括: -ugGdsr 以及:
-l, --login:修改用户登录名;
-L, --lock; -U, --unlock: 锁定/解锁用户;
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
更新用户密码: passwd
可用选项有:
-l / -u:锁定和解锁用户;
-d:清除用户密码串;以及用户密码过期的相关日期;
创建组groupadd [options] GROUP_NAME #新建组
常用选项:
-g GID:指定GID;默认是上一个组的GID+1;
-r: 创建系统组;
删除组groupdel [options] GROUP_NAME
修改组信息:groupmod [options] GROUP_NAME
常见选项:
-g GID:修改GID;-n new_name:修改组名;
管理组:gpasswd [option] group_name
常见选项:-a/d:添加、删除用户;-A:指定组管理员;
gpasswd -a user_name group_name
======其他指令========
切换用户: su USERNAME
用户/用户组相关文件
用户信息库文件(/etc/passwd)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
......
用户的信息配置文件大体格式如下:
name:password:UID:GID:GECOS:directory:shell
name:登录用户名; password:加密的密码或"*/X";
UID:用户标识id号; GID:用户的基本组(主组)id号;
GECOS:用户的注释信息;
directory:用户家目录; shell:登录shell;
用户密码影子文件(/etc/shadow)
共有9个字段:
用户名:加密密码:最后一次修改时间:
最小修改时间间隔:密码有效期:
密码需要变更前的警告天数:密码过期后的宽限时间:
账号失效时间:保留字段
用户组信息库文件(/etc/group)
root:x:0:
bin:x:1:
tty:x:5:
disk:x:6:
cdrom:x:11:
mail:x:12:postfix
...
group name:password:GID:user_list
组名:密码:组id:组内用户列表
用户组密码影子文件(/etc/gshadow)
root:::
bin:::
sys:::
nobody:::
......
group name:encrypted passwd:administrators:members
group name:组名;
encrypted passwd:组认证密码,如果为空或者"!"表示组没有设置密码;
administrators:组内管理者,如果有多个组是管理,用逗号分隔;
members:组内成员,多个用逗号分隔;
用户ID
管理员用户 0
普通用户 1~65535
其中普通用户:
系统用户: CentOS6 (uid范围为:1~499) CentOS7(uid范围为:1~999)
登录用户: CentOS6 (uid范围为:500~60000) CentOS7(uid范围为:1000~60000)
加密算法
对称加密:
采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
单向散列加密:
单向加密又称为不可逆加密算法,其密钥是由加密散列函数生成的。单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
1、MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文;
2、SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值。其变种由SHA192,SHA256,SHA384等;
3、CRC-32,主要用于提供校验功能;
算法特征:
① 输入一样,输出必然相同;
② 雪崩效应,输入的微小改变,将会引起结果的巨大变化;
③ 定长输出,无论原始数据多大,结果大小都是相同的;
④ 不可逆,无法根据特征码还原原来的数据;
非对称加密:
非对称密钥加密也称为公钥加密,由一对公钥和私钥组成。公钥是从私钥提取出来的。可以用公钥加密,再用私钥解密,这种情形一般用于公钥加密;也可以用私钥加密,用公钥解密,常用于数字签名,因此非对称加密的主要功能就是加密和数字签名。
特征:
秘钥对,公钥(public key)和私钥(secret key)
主要功能:加密和签名
发送方用对方的公钥加密,可以保证数据的机密性(公钥加密);
发送方用自己的私钥加密,可以实现身份验证(数字签名);
文件和目录操作:
目录: mkdir / rmdir / cd / pwd
文件: touch / rm / cp / mv
文件查询: ls / stat / file
文件查找: find
文件用户权限: chown / chmod / chgrp
常用参数: -r:递归; -f:强制; -i:提示
常用参数及使用...
mkdir 创建目录
mkdir dir4 dir5 dir6
mkdir -p xiezhr/test
mkdir -m 755 dir
touch创建空文件或修改时间戳
stat 查看文件时间戳属性:
stat /etc/hostname
touch -m /etc/hostname
touch -a /etc/hostname
cp 复制文件或目录
复制并重命名:
cp a.txt b.txt
cp -p 1.txt 3.txt // -p: 保留用户和时间属性;
cp file1 file2 dir1 //dir1 必须存在;
cp dir1/* dir2 //dir2 必须存在;
cp -r dir1 dir2 //dir2 不存在时自动创建;
查找文件find [path...] -options [-print / -ecex / -ok]
指定要查找的目录路径:
~表示home目录 .表示当前目录 /表示根目录
指定查找方式:
-name:按名称; -perm:按权限; -user: 按属主;
... ...
指定结果输出方式:
-print:输出到标准输出上; -ecex::输出到shell命令上;
---参数: -p 递归创建;
touch 创建空文件或修改时间戳: 参数: -a; -m; -r;
cp 复制文件或目录: 参数: -p: 保持属性;-r: 递归; -a(p+r+d参数); -i: 覆盖提示;
mv 移动或重命名文件: 覆盖处理: -n: 不覆盖;-f: 直接;-i: 提示;-u: 更新;
rm 删除文件或目录: -f: 强制; -r: 递归;
chown: 改变文件或目录的用户:用户组 参数: -R: 递归
chmod: 改变文件的权限
chgrp: 更改文件用户组
更多...
文件浏览: cat / head / tail / wc / more
文件编辑vi:
- 命令行模式:用户输入的任何字符都被Vi当作命令加以解释执行;
复制: yy nyy nyw | p{aste};
删除: x nx / X nX; dd ndd; d$ / d^ ; - 编辑模式:
进入编辑模式:i; 退出编辑模式: ESC; - 底行模式:
q: 退出; w: 写盘; !:不写盘;
列出行号: set nu; 跳至行: 数字+冒号+回车;
查找: /关键字; ?关键字 n{ext} N{ext}
文件浏览详细操作...
正文显示:cat [OPS] fileName
常用选项:-n 或 --number:对输出行数编号。
-b 或 --number-nonblank:对输出行数(不含空行)编号。
显示文件头:head [OPS] filename
常用参数: -n<行数> 显示的行数。
head -n 12 runoob_notes.log ;显示前5行:
head -c 20 runoob_notes.log ;显示前20个字节:
显示文件尾:tail [OPS] filename
参数: 除类似head的-cn外,还有:
-f 循环读取 ,常用于查阅正在改变的日志文件。
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
跟踪名为 notes.log 的文件的增长情况:
tail -f notes.log
统计文件字符数wc [-clw] testfile
不指定文件名称、或是所给予的文件名为"-"时,从标准输入设备读取数据。
大文件More [OPS] filename
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数说明:
-num 限制每页显示的行数;
+/pattern 从字串(pattern)之后显示;
+linenum 从第 num 行开始显示;
fileNames 欲显示内容的文档,可为多个文件;
操作说明:
空格键/enter键:向下移动一页;
b键:向上移动一页;
n:发现这个字符串的下一次出现;
/字符串:向前搜索这个字符串;
v: 启动vi编辑器;
q:退出more命令
h:显示帮助菜单;
===文件类型file===
file test.png
file teat.txt
文件用户权限: chown / chmod / chgrp
显示: ls
文件用户权限操作:
===① 设置文件所有者===
chown [option] user[:group] file
chown root /var/run/httpd.pid
chown -R runoob:runoobgroup * // -R 递归
更改文件访问组也可以使用chgrp命令:
chgrp -v bin log2012.log
chgrp --reference=log2012.log log2013.log
;可用--reference=<参考文件或目录>作为参照
===② 更改文件权限位chmod===
chmod [-cfvR] mode file...
常用参数: -R 递归处理;
chmod ugo+r file1.txt
chmod ug+w,o-w file1.txt file2.txt
chmod 777 file
chmod ug=rwx,o=x file
文件权限
文件类型:
用户类型:超级用户root,普通用户,系统用户;
文件访问者分类:
所有者User; 所有者的组成员Group; 其他用户: Others; 所有:All
u:属主; g:属组; o:其它; a: 所有;
文件操作权限分类:
可读Read;可写Wrie;执行:eXecute; 无权限;
权限表示: r,w,x;
赋权表示法: u=rwx; ... a=rwx;
授权表示法: u+r, u-x, g+w, g-x
八进制权限: 660,775,600,400
附: 建立文件时预设的权限掩码umask
查看: umask 以字符方式查看:umask -S
文件建立时的权限值为:777-umask;
特殊权限
===特殊权限SUID:===
默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主;
管理文件的SUID权限:
chmod u+|-s FILE…
展示位置:属主的执行权限位
如果属主原本有执行权限,显示为小写s;
否则,显示为大写S;
===特殊权限SGID:===
当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;
管理文件的SGID权限:
chmod g+|-s FILE…
展示位置:属组的执行权限位
如果属组原本有执行权限,显示为小写s;
否则,显示为大写S;
===特殊权限Sticky:===
对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置Sticky权限,则每个用户能创建新文件,且只能删除自己的文件;
管理文件的Sticky权限:
chmod o+|-t FILE…
展示位置:其它用户的执行权限位
如果其它用户原本有执行权限,显示为小写t;
否则,显示为大写T;
系统上的/tmp和/var/tmp目录默认均有sticky权限;
灵活权限管控机制acl
在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;ACL是Access Control List的缩写,传统的Linux权限只能针对一个用户、一个群组及非此群组的其他人设置权限而已,无法针对单一用户或个人来设计权限。ACL可以对权限进行更细致的设定,ACL可以为某个文件单独设置该文件具体的某用户或组的权限,而不走三类权限位;
常用的选项:
-m/x :设置/删除后文件的acl参数;
-d :设置目录的“默认acl 参数”的意思!该目录新建的数据会引用此默认值;
-b :移除“所有的” ACL 设置参数;
-k :移除“默认的” ACL 参数;
-R :递回设置 acl ;
===针对特定使用者/群组:===
setfacl –m u:用户名:权限 <文件名> 设置某用户名的访问权限
u:[使用者帐号列表]:[rwx]
setfacl -m u:vbird1:rx acl_test
setfacl –m g:组名:权限 <文件名> 设置某个组的访问权限 g:[群组列表]:[rwx]
setfacl -m g:mygroup1:rx acl_test getfacl acl_test
===note "设置有效权限 m:[rwx]
setfacl -m m:r acl_test
getfacl acl_test
===ACL权限继承=== 使用上述方式对目录设置权限时,在该目录下创建子文件,子目录是不会继承父母来ACL权限的。要想做到继承权限,在设置ACL权限的时候必须指定-d参数,即修改修改默认权限。
设备管理命令:
查询: lsblk / mount/umount
LVM:
设备管理命令详解...
LVM命令详解
逻辑卷是一种device mapper技术,即可以将一个或者多个底层块设备组织成一个逻辑设备,从而提供动态改变大小,不停机情况下添加磁盘,快照以及备份 等功能,使得对于磁盘的管理更加方便。
逻辑卷的体系分为3个层次: 底层的PV,中层的VG,最上层的LV。
pvcreate命令 – 创建逻辑卷
pvcreate命令用于将物理硬盘分区初始化为物理卷,以便LVM使用。
pvcreate /dev/sdb
pvcreate /dev/sdc{1,2,3,4}
pvscan命令 – 列出找到的物理卷
pvscan
pvscan -n
仅显示不属于任何卷组的物理卷:
pvresize命令 – 调整一个卷组中的物理卷的大小
pvresize --setphysicalvolumesize 40G /dev/sda5 ;调整物理卷/dev/sda5的大小为40GB
pvresize -t /dev/sda2
测试模式下运行调整:
vgmerge命令 – 合并两个卷组
前提条件: 物理盘区大小相等,并且两个卷组的物理和逻辑卷摘要都符合目标卷组名称的要求,则非活动源卷组名称将合并到目标卷组名称中;
vgmerge -v vg1 vg2
vgcreate命令 – 创建卷组
vgcreate vg1000 /dev/sdb1 /dev/sdb2
vgdisplay命令 – 显示LVM卷组的信息
vgdisplay
vgdisplay -A ;仅显示活动的vg
vgdisplay vg_data ;显示指定的vg;
vgremove命令 – 删除LVM卷组
vgremove vg_data
vgremove -f vg_data ;强制
vgextend命令 – 扩展卷组
通过向卷组中添加物理卷来增加卷组的容量。 vgextend vg_data_ /dev/sdb1
vgs命令 – 报告关于卷组的信息
lvs命令 – 报告有关逻辑卷的信息
lvchange命令 – 更改逻辑卷属性
lvchange -a y /dev/vg1/linuxcool_v1
;将逻辑卷/dev/vg1/linuxcool_v1的状态设置为不可用;
lvchange -p r vg1/linuxcool_v1
将逻辑卷linuxcool_v1的访问权限设置为只读:
lvresize命令 – 调整LVM逻辑卷空间大小
调整LVM逻辑卷的空间大小,操作需谨慎,有可能数据丢失。
lvresize -L +200M /dev/vg_data_/lv_data
lvreduce命令 – 减少LVM逻辑卷所占空间大小
减少LVM逻辑卷占用的空间大小; 可能会删除逻辑卷上已有的数据,操作前必确认;
lvreduce -L -50M /dev/vg_data_/lv_data
lvextend命令 – 在线扩展逻辑卷空间
lvextend -L +100M /dev/vg_data_/lv_datat
lvremove命令 – 删除指定LVM逻辑卷
逻辑卷已经mount,须用umount命令卸载后,方可执行lvremove操作;
lvremove /dev/vg_data/lv_data
分区工具
MBR:MBR分区表(即主引导记录)大家都很熟悉。所支持的最大卷:2T,而且对分区有限制:最多4个主分区或3个主分区加一个扩展分区
GPT: GPT(即GUID分区表)。是源自EFI标准的一种较新的磁盘分区表结构的标准,是未来磁盘分区的主要形式。与MBR分区方式相比,具有如下优点。突破 MBR 4个主分区限制,每个磁盘最多支持128个分区。支持大于2T的分区,最大卷可达18EB。
fdisk命令 – 磁盘分区
fdisk -l ;查看所有分区情况
fdisk /dev/sdb ;选择分区磁盘
fdisk /ext ;在当前磁盘上建立扩展分区:
fdisk /actok ;不检查磁盘表面加快分区操作:
fdisk /cmbr ;重建主引导记录:
图形化工具:cfdisk
parted命令 – 磁盘分区工具
parted 中所有的操作都是立即生效的,与 fdisk 交互命令明显不同,所以加倍小心;
格式: parted [选项] [设备] [指令]
如果:如果没有给出“命令”,则以交互模式运行。
命令行操作示例:
parted /dev/sdb mklabel gpt
parted /dev/sdl mkpart primary 0% 100%
parted /dev/sdb mkpart primary 27% 54%
parted /dev/sdb print
parted /dev/sdb rm 2
parted交互模式
align-check 检查分区N的类型(min|opt)是否对齐
help 打印通用求助信息,或关于[指令]的帮助信息
mklabel 创建新的磁盘标签 (分区表)
mkpart 创建一个分区
name 给指定的分区命名
print 打印分区表,或者分区
quit 退出程序
rescue 修复丢失的分区
resizepart 调整分区大小
rm 删除分区
select 选择要编辑的设备,默认只对指定的设备操作,这里可以改变指定的设备
disk_set 更改选定设备上的标志
disk_toggle 切换选定设备上的标志状态
set 更改分区的标记
toggle 设置或取消分区的标记
unit 设置默认的单位
version 显示版本信息
文件系统
mkfs命令 – 在特定分区上建立文件系统
mfks -t ext3 /dev/sda6
mkfs.ext2 -q /dev/hda1 ;-q: mke2fs -q /dev/hda1
mkfs.ext4 /dev/sdb
mkfs.ext4 -L 'root' -b 2048 /dev/sdb -m 5
;添加卷标‘root’,块大小为2048,文件系统预留5%给管理员:
mkfs.msdos -n Tester /dev/fd0
mkfs.msdos 功能同 mkdosfs;
设备管理基础
Udev 设备管理工具
udev是一个设备管理工具,udev以守护进程的形式运行,通过侦听内核发出来的uevent来管理/dev目录下的设备文件。
/dev目录下的设备文件
设备文件分为两种:块设备文件(b)和字符设备文件©;
由devf或者udev会自动创建。
/dev/hd[a-t]:IDE设备
/dev/sd[a-z]:SCSI设备
/dev/fd[0-7]:标准软驱
/dev/md[0-31]:软raid设备
/dev/loop[0-7]:本地回环设备
/dev/ram[0-15]:内存
/dev/null:无限数据接收设备,相当于黑洞
/dev/zero:无限零资源
/dev/tty[0-63]:虚拟终端
/dev/ttyS[0-3]:串口
/dev/lp[0-3]:并口
/dev/console:控制台
/dev/fb[0-31]:framebuffer
/dev/cdrom => /dev/hdc
/dev/modem => /dev/ttyS[0-9]
/dev/pilot => /dev/ttyS[0-9]
/dev/random:随机数设备
/dev/urandom:随机数设备
Device Mapper机制
管理工具: dmsetup 是一个更加底层的逻辑卷管理工具,平时用lvs即可;
dmsetup ls
dmsetup remove vg--test-vg--lv
dmsetup info
常用命令: ps aux ps -ef top pstree
优先级: nice -n -5 service httpd start renice -10 2125 ;2121为PID
终止进程: kill [信号] PID killall 进程名
命令详解
lsof:Linux 查看端口占用情况
安装lsof: yum -y install lsof
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程lsof
which httpd
:那个进程在使用apache的可执行文件
lsof /etc/passwd:那个进程在占用/etc/passwd
lsof -c sendmail:查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn:显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
lsof -p 3029:显示那些文件被pid为30297的进程打开
lsof -D /tmp:显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列
lsof -u1000:查看uid是100的用户的进程的文件使用情况
lsof -utony:查看用户tony的进程的文件使用情况
lsof -utony:查看不是用户tony的进程的文件使用情况(是取反的意思)
lsof -i:显示所有打开的端口
lsof -i:80:显示所有打开80端口的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
lsof -i UDP@[url]www.akadia.com:123:
;显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
lsof -i tcp@ohaha.ks.edu.tw:ftp -r:不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,
;直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
lsof -i tcp@ohaha.ks.edu.tw:ftp -n:lsof -n 不将IP转换为hostname,缺省是不加上-n参数
netstat:
安装netstat:
yum repolist all
yum provides */netstat 或直接 yum provides netstat
返回结果: net-tools-2.0-0.17.20131004git.el7.x86_64
yum install net-tools
killall终止特定的一类进程
ps aux | grep "httpd" | grep -v "grep"
killall httpdps aux | grep "sshd" | grep -v "grep"
killall -i sshd
进程相关
**字段含义: **
·USER 运行进程的用户
·PID 进程ID号,底下的 PPID 则父进程的ID;
·%CPU 占用CPU资源百分比
·%MEM 占用物理内存百分比
·VSZ 使用掉的虚拟内存量
·RSS 占用的固定的内存量
·TTY 进程运行的终端。
若与终端机无关,则显示 ?
tty1-tty6 是本机上面的登入者程序,
若为 pts/0 等等的,则表示为由网络连接进主机的程序
·STAT 进程状态(D,不可中断;R,运行;S,中断;T,停止;Z,僵死)
·START 该进程被触发启动的时间
·TIME 使用掉的CPU时间
·COMMAND 该进程实际指令
Linux进程优先级:
ps -le
参数:PRI/NI Priority 和 Nice ;PRI值是由内核动态调整的,只能通过修改 NI 值影响PRI值;
NI 取值范围负20~19;普通用户调整范围为0到19,且只能调高,不能调低;
root才能设定进程 NI 值为负值;
**常用的信号: **
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键即为 kill -2 的信号。
3 QUIT 退出。
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。
Systemd管理的单位是unit,而service只是mount,.service,.target,.wants中(共12种)的的一种.
Systemctl基本指令:
查看: systemctl --version whereis systemd/systemctl ps -eaf | grep [s]ystemd
启动分析: systemd-analyze { blame | critical-chain }
运行级别: 〔rescue| emergency〕〔get-default| set-default〕〔reboot | halt | suspend | hibernate | hybrid-sleep 〕
CPU份额: systemctl set-property httpd.service CPUShares=2000
systemctl管理Service:
列出/查询: systemctl list-unit-files --type=service | grep ssh
**常用指令: ** 〔start | restart | stop | reload | status〕〔enable | disable 〕〔kill〕
systemctl管理挂载点Mount:
列出/查询: systemctl list-unit-files --type=mount
**常用指令: ** 〔start | restart | stop | reload | status〕〔enable | disable | is-active 〕〔mask | umask〕
systemctl管理套接字Socket:
列出/查询: systemctl list-unit-files --type=socket
**常用指令: ** 〔start | restart | stop | reload | status〕〔enable | disable | is-active 〕〔mask | umask〕
Systemctl使用详解
Unit配置文件--Service
主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录下;
配置文件查看: systemctl cat sshd.service 配置文件分成几个区块,每个区块包含若干条键值对:
[Unit] 区块:启动顺序与依赖关系:
启动顺序:After和Before字段;
依赖关系:Wants字段和Requires字段(同时启动);后者为强依赖;
[Service] 区块:启动行为--如何启动当前服务
-
启动命令:
ExecStart字段:定义启动进程时执行的命令
ExecReload字段:重启服务时执行的命令
ExecStop字段:停止服务时执行的命令
ExecStartPre字段:启动服务之前执行的命令
ExecStartPost字段:启动服务之后执行的命令
ExecStopPost字段:停止服务之后执行的命令
RestartSec: 如果服务需要被重启,这个参数的值为服务被重启前的等待秒数。
TimeoutSec:定义systemd停止当前服务之前等待的秒数
Environment:指定环境变量
Nice:服务的进程优先级,值越小优先级越高,默认为0。-20为最高优先级,19为最低优先级
WorkingDirectory:指定服务的工作目录
RootDirectory:指定服务进程的根目录,配置该参数后,服务将无法访问指定目录以外的任何文件。
User:指定运行服务的用户,会影响服务对本地文件系统的访问权限。可使用root
Group:指定运行服务的用户组,会影响服务对本地文件系统的访问权限。
PrivateTmp:是否给服务分配独立的临时空间(tru/false)所有的启动设置之前,都可以加上一个连词号(-),
表示"抑制错误",即发生错误的时候,不影响其他命令的执行。
如: EnvironmentFile= -/etc/sysconfig/sshd -
启动类型:
由Type字段定义:simple(默认值):ExecStart字段启动的进程为主进程
forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程
oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
dbus:类似于simple,但会等待 D-Bus 信号后启动
notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
一种使用场合是为让该服务的输出,不与其他服务的输出相混合 -
重启行为:
Restart字段:指定什么情况下需要重启服务进程:
no:退出后不会重启
always:除了用systemctl stop或等价的服务停止操作命令,其他情况下都可以重启
on-success:只有正常退出时(退出状态码为0),才会重启
on-failure:非正常退出时(退出状态码不为0),包括被信号终止和超时,才会重启
on-abnormal:只有被信号终止和超时,才会重启(一般用用于允许发生错误的服务)
on-abort:只有在收到没有捕捉到的信号终止时,才会重启
on-watchdog:超时退出,才会重启killMode字段定义Systemd如何终止当前服务
control-group(默认值):当前控制组面的所有子进程,都会被杀掉
process:只杀主进程
mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号
none:没有进程会被杀掉,只是执行服务的stop命令。
[Install]区块:如何安装这个配置文件/如何开机自启
WantedBy字段:表示该服务所在的 Target。Target的含义是服务组,表示一组服务。
WantedBy=multi-user.target指的是:sshd 所在的 Target 是multi-user.target。
这个设置非常重要,因为执行:
systemctl enable sshd.service命令时,
sshd.service的一个符号链接,
就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中查看Systemd默认的启动Target:
systemctl get-default
输出: multi-user.target在这个组里的所有服务,都将开机启动。
这就是为什么systemctl enable命令能设置开机启动的原因。
Systemd管理Target
Target是由服务组成的一组启动目标。
指定了一个target作为启动目标后,系统下次启动时就会启动target里面的所有服务。
systemctl get-default
systemctl set-default multi-user.target
systemctl isolate graphical.target
;该命令表示临时将系统界面切换到图形界面
systemctl set-default graphical.target
;表示下一次开机启动将系统界面切换到图形界面
查看服务的CPU利用率
01.获取服务的当前CPU份额
systemctl show -p CPUShares httpd.service
02.限制服务CPU份额
systemctl set-property httpd.service CPUShares=2000
注意:为服务设置CPUShare时,会创建一个名为service的目录(httpd.service.d),内有一个包含CPUShare Limit信息的文件90-CPUShares.conf。
vi /etc/systemd/system/httpd.service.d/90-CPUShares.conf
[Service]
CPUShares=2000
工作管理:
命令放入后台执行: ** 1. find / -name install.log & 2. 命令执行过裎中按 Ctrl+Z 快捷键
查看当前终端放入后台的工作: jobs
把后台命令恢复在前台执行: ** fg fg %1
把后台暂停的工作恢复到后台执行: bg bg %工作号
http://c.biancheng.net/view/1079.html