vim、用户管理、所有者所属组管理、监控和管理进程、服务管理

vim

vim是vi的增强版,用法是一样的,只能编辑文本,不能编辑其他类型的文件。
默认情况下,vim是已经安装好的,如果你的系统是最小化安装,则是没有安装vim的,通外网的情况下可以选择安装:yum -y install yum , 或者使用vi;
vim /path/file ,如果没有致命路径,则是当前路径下的文件file 也就是相对于 vim file
如果这个file不存在的话,则是在内存里创建出这个文件,如果存在的话,则把这个文件的内容读到内存里。
vim编辑器有三种模式:
命令模式,插入模式,末行模式
刚打开文件,就是在命令模式里的。
在这里插入图片描述
进入到插入模式:
i:从当前光标位置插入
a:从当前光标的下一个字符 插入
o:在当前行的下一行生成一个空白行,并进入插入
I:光标跳到本行开头,并进入插入模式
A:光标到本行结束,并进入插入模式
O:在当前行的上一行生成一个空白行,并进入插入
命令行模式下:
:q 退出
:q! 强制不保存退出(用于编辑了文档不想保存时用)
:wq 保存 ——可用 :x 替代:wq
:wq! 强制保存(有些文档因为特殊性 必须使用wq!退出)
:w /path/filename 保存到该目录下(相对于另存为)
:r /path/file 在文本中光标出 读取/path/file文档内容兵写入到当前光标处
: .! 执行命令 ,快捷键连续按2次!!即快速到:.! 该模式, 后面输入命令即可快速 读取内容到光标所在处(如果光标所在行有内容,则替换) 如::.! cat /etc/fstab
在这里插入图片描述
文本中临时显示行号::set nu , 取消显示::set nonu
文本中永久显示行号:在当前文件创建一个隐藏文件 vim .vimrc 在里面写入 set nu 保存退出即可(仅对当前用户生效)。 对所有用户生效方法(root下操作):编辑文件 vim /etc/vimrc 在里面空白处添加 set nu 保存即可。)
替换:: s/需要替换的内容/替换后的内容/ (要养成一个习惯,先把框架 s/// 写好,然后往里面塞东西) 该方法只能替换光标所在处的一行。 替换指定行::n,ms/需要替换的内容/替换后的内容/g ,如先需把10-20行之间的rhce替换为RHCE:
:10,20s/rhce/RHCE/g 即可,:10,20 s/^/ /g :在第10行至第20行每行前面加四个空格,用于缩进。

变量说明: . 代表当前行, ^ 代表行首, $ 代表最后一行, 1 r h c e R H C E : . , -1 代表倒数第二行 , % 全文替换 如: 当前行(光标所在处)到倒数第二行的所有rhce替换为RHCE: :., -1s/rhce/RHCE/g
全局rhce替换为RHCE : :%s/rhce/RHCE/g
如果带 / 需要使用\转义 如: 全文将/rhce/替换为RHCE: :%s//rhce//RHCE/g
在这里插入图片描述
如果要删除的话:方法和上面一样 只是 : s/需要删除的内容/ (一个空白即表示删除)/
u 表示撤销上一步操作。 ztrl+r 表示 取消撤销!
j:上翻一行 , k:下翻一行
yy:复制,nyy:复制n行
p:粘贴 (仅能粘贴yy复制的内容)
dd:剪切(删除)行 ,ndd:剪切(删除)n行 (删除的内容可以p粘贴的)
x:删除一个字符,nx:删除n个字符
r:替换 ,R:进入替换模式,esc退出替换模式
G:最后一行
gg:第一行或者1G 同理。
ztrl+v:可视化模式,可以用上下左右选中行或者鼠标选中行 按一次y复制,d删除。。。等等功能。批量注释,将光标调到要注释的那一行,使用Ctrl+v的方法进入块选择模式;然后按住光标上下移动,选择要注释的行;按shift + i进入行首输入模式;
输入#后输入完毕之后,按两下ESC(批量删除注释,上诉相同最后一步输入d即可)
:sp:分屏模式,ctrl+w 切换屏幕,:sp 是分屏当前文本,如需分屏其他文本 则:sp 路径, 如: 在打开以文本下 :sp /etc/fstab
在这里插入图片描述
ZZ:保存退出(:wq)
vimtutor:vim自带教程
vim的特殊使用,定义模版,如定义一个sh为后缀的模版,就是打开.sh结尾的文件会自动输入格式 #!/bin/bash,操作步骤:
1、vim /etc/vimrc ,28行有自带.spec结尾的模版,根据模版改就可以了,吧spec替换为自定义结尾,如29行的sh
在这里插入图片描述
2、因为系统不存在.sh的模版,所以需要复制一份sh为后缀的模版,注:存放模版固定地址:/usr/share/vim/vimfiles/template.*** ,这是固定格式,只需要该后缀即可。
在这里插入图片描述
3、定义模版(模版内容可以自定义任何,这里以简单的#! /bin/bash 为例):
在这里插入图片描述
所以定义好模版后 打开就是这样子的,注:要vim打开才行,vi打开没模版内容
在这里插入图片描述
4、查看一下系统自带格式:cat /usr/share/vim/vimfiles/template.spec
在这里插入图片描述

用户管理

用户的分类:
本地用户–用户是在本机上创建的
网络用户–用户不是在本机上创建的,是在远端服务器上创建的
windows下面用户的信息是存储在SAM
linux里设计到2个文件:
1、/etc/passwd :里面存储的账户信息,类似qq号码,签名等信息
2、/etc/shadow :里面存储的是密码信息
每一个用户都有一个ID,user id 简称为:UID
root–UID=0
普通用户的UID=1000-60000
1-999 属于系统用户
每一个组都有一个id,grep id 简称为:gid
组:组织,对组设置权限的话,那么组里的成员都会享受到这个权限。
信息解析:
在这里插入图片描述
tom:账户名称
x:密码
1000:UID
1000:gid
1000后面的tom:注释信息,比如图形化界面登陆的时候显示的用户,这个是可以更改的 就是说,将tom注释信息该为toom,图形化登陆的时候登陆toom实际上登陆的是tom账户。
/home/tom:家目录
/bin/bash:使用的shell为bash
passwd -S 用户名 查看用户状态:
在这里插入图片描述
getent:查看网络用户
如:查看用户信息:getent passwd tom ,查看密码信息: getent shadow tom 。 该命令也可以查看本地信息,但网络账号信息只能用gentent,并不能直接cat /etc/passwd 网络用户名 。
id 用户名:快速查看某个用户存在与否 ,存在会显示id信息,不存在,会显示id: 用户名: no such user
创建用户:分为图形化创建和命令行创建
图形化创建:system- config- users &
在这里插入图片描述

全称 =注释信息
如果不创建私人组群,则会自动分配到 users 组群中。
注:如果某个用户的shell被设置为了/sbin/nologin的话,则这个用户我们称之为:匿名用户:,这个用户是不能登录系统的,root也不能su过去,意义:用于给其他服务来使用,比如共享了一个目录,可以设置tom可以访问共享目录。
命令行创建组:groupadd 组名 ,删除组:groupdel 组名
命令行创建用户:useradd = adduser
在这里插入图片描述
-c=注释信息
-d和-m的区别:-d:为主目录指定一个名字(如果不想用登录名作为主目录名的话) -m:创建用户的HOME(主)目录 ,如果-d指定了目录,后面更改了-d目录,账号是无法登陆的,需要吧信息cp -a到更改后的目录里才能正常登陆。
如 :创建一个mary账户,别名为Im mary 指定主目录名为/mary 指定shell为nologin 并且添加到tom组 和root组 注:如果创建了账户不设密码是无法登陆的。
\ :代表继续上一行命令,\ 后面不能加任何字符 包括空格。
-g:不再为tom创建同名私人组了,直接加入到tom组,tom指数以一个组tom
-G:除了为tom创建同名私人组之外,同时加入到root组,此时tom属于2个组,tom,root
在这里插入图片描述

passwd 用户:创建密码, 也可以用:echo 密码 | passwd --stdin 用户名 ,来设置密码。
在这里插入图片描述
如何设置用户属性:图形化界面和命令行的方式
图形化修改:system- config- users &
在这里插入图片描述
在属性下直接修改即可。
命令行修改: usermod 和useradd的参数一样,只是修改用usermod而已
如 我想修改登陆的shell 和 注释信息 :
在这里插入图片描述
修改 家目录信息:
在这里插入图片描述
注,这种情况下账号是无法登陆的,因为/home/里没有mary目录,所以需要吧/mary/ 复制到/home 目录中 账号才能正常登陆:
在这里插入图片描述
用户和组的关系:
grep 用户名:查看组 如 查看mary的组:greps mary
在这里插入图片描述
groups :修改组信息 ,修改组也可以用usermod,但不建议用。
在这里插入图片描述
密码锁定: 如果设置账户密码锁定了,则无法使用该用户登陆了但不影响root切到密码过期的用户上。 usermod -L 用户名 :锁定用户, usermode -U 用户名:解锁用户名
在这里插入图片描述
设置密码策略: 就是启动密码账号过期 图形化查看默认规则:
在这里插入图片描述

chage 参数 用户:用于密码实效管理,该是用来修改帐号和密码的有效期限
-d:指定密码最后修改日期
-E:密码到期的日期,过了这几天,此账号将不可用。0
表示马上过期,-1表示永不过期。
-h:显示帮助信息兵退出
-I:密码过期后,锁定账号的天数
-l(小L ):列出用户以及密码的有效期
-m:密码可以更改的最小天数,为0代表任何时间都可以更改密码
-M:密码保持有效的最大天数
-w:密码过期前,提前收到警告信息的天数。
查看所有默认信息存储目录:cat /etc/login.defs,可以vi 修改默认参数,注:修改值后只对新用户生效已创建的不会生效。
在这里插入图片描述
创建用户其他默认的信息是有下面这个文件决定的:
vim /etc/default/useradd
在这里插入图片描述
组所属目录:/etc/groups
查看账户信息:chage -l(小L) 用户 :
在这里插入图片描述
如:同时修改多个条件: -E 99999为永不过期
在这里插入图片描述
所以,现在使用getent shadow mary 查看的最后信息分别为:
在这里插入图片描述
17654:从1970年到现在经过了多少天
10:密码最小使用天数
30:密码最大使用天数
5:密码过期前,提前收到警告信息的天数(超时时间)
3:密码过期后,锁定账号的天数(缓冲时间)
99999:密码过期时间
如:修改 密码最后修改日期 兵把更换天数设置为30天,激活天数为3天:
chage -d 2018- 05- 04 -w 3 bob
在这里插入图片描述
所以 过期后在激活钱天数登陆需要你强制修改密码的:

在这里插入图片描述

所有者所属组管理

在这里插入图片描述
所有者:最高权限,可以使用,可以改
所属组:只能使用,不能改
chown 目标用户 file/dir:更改目标用户所有者
chown .目标组 file/dir:更改目标用户所属组
chown 用户.组 file/dir : 更改目标用户所哟组合和所属组
在这里插入图片描述
chown -R :递归修改权限,如果不-R 只会修改目录权限,目录里的内容权限并不会被改变。
在这里插入图片描述
chgrp:chgrp 用户名 file/dir ,专门改组的命令。
在这里插入图片描述
如:
在这里插入图片描述
在这里插入图片描述:权限,一般分为3个位一组权限—(u用户),—(g组),—(o其他)。根据需要赋予执行权限:chomd u+x/g+x/o+x/a+x,其中a为给所有(ugo)增加权限,相反 如果需要删除权限,chomd u-x/g-x/o-x/a-x
r:读权限,w:写权限,x:执行权限
读和写权限很简单,说明一下x执行权限,如下:写了一个脚本,但直接. / 脚本却不能执行,是因为脚本没有x权限,所以就需要给用户加一个x执行权限,脚本才能正常执行。
在这里插入图片描述
用数字表示权限:
r=4,w=2,x=1 ,之前说了一个文件 有3组(ugo)权限,每一组权限为rwx相加的总和。 如:chomd 740 表示为用户(u)有读写执行权限,组(g)只有读权限,其他(0)没有权限 如下图:
在这里插入图片描述
用数字对应权限,如567:
在这里插入图片描述
用数字赋予权限更方便 注:如果赋予的数字总和不为421相加的结果则会报错:
在这里插入图片描述

默认权限:如创建目录默认权限为755 ,创建文件为644 如下图:
在这里插入图片描述
注: 创建的时候系统给文件所有最高的权限是666,给目录所有最高的权限是777。 umask称之为权限的过滤符
在这里插入图片描述
原因是文件里默认是不会有x权限的,即使你过滤,也过滤不出来。
默认权限的计算:
目录(dir)的默认权限=777- umask
文件(file)的默认权限=666- umask(umask的三位数哪个是奇数先-1)
如:吧umask设置为564后在创建文件,dir=213 , file= 202:
在这里插入图片描述
把umask设置为111后,则全部为666了 因为文件奇数要-1:
在这里插入图片描述
注:
在这里插入图片描述
特殊权限: s:1.可执行命令的所有者的位置, 2.目录的所属组的位置
1.可执行命令的所有者的位置——当某个命令所有者的位置上有s位的话,以为着当其他人在执行这个命令的时候将具有所有者(u)的权限。
在这里插入图片描述
使用:如,root下创建一个默认权限位644的文件,只能root下有写权限,在其他用户下是没有写权限的,所以这个时候登陆其他用户无法在root下创建的文件写入内容,但如果roo下给 vim 一个s权限,则这时候其他用户就可以在root下创建的644文件写入内容了:
在这里插入图片描述
2 .目录的所属组的位置——假设存在一个目录/rh124,这个目录所属组为tom,如果/rh124所属组的权限里有s的话,那么不管是谁在这个目录里创建的文件/目录,都讲继承rh124所属组tom
如:在增加s权限前所属组是root,增加s权限并把数组改为users。
在这里插入图片描述

所以,后面创建的带有rh124目录文件都会继承users组:
在这里插入图片描述

特殊权限:t :用于目录的 其他(o)的位置——意味着这个目录里的东西,除了所有者和 root之外,其他用户是没有权限删除的,即使权限是777也不行。
如:创建一个/rh124目录,权限设置为777,用户和所属组设置为tom
在这里插入图片描述
现在在tom用户下/rh124/里创建一个aa.txt文件并设置权限为777
在这里插入图片描述
现在进入bob用户下,去删除刚才在tom用户下创建的aa.txt文件,发现是可以正常删除的:
在这里插入图片描述
现在在root用户下给/rh124 添加 t 权限:
在这里插入图片描述
在到tom 用户下 创建一个权限为777的aa.txt文件:
在这里插入图片描述
在到bob用户下,进行删除刚才在tom用户下创建的aa.txt文件,发现无法删除了 因为添加了t权限:
在这里插入图片描述

chmod权限的4位数介绍:
在这里插入图片描述
如:
在这里插入图片描述
lsattr :lsattr /file/dir 查看隐藏权限:
在这里插入图片描述
增加隐藏权限,(注:对root也生效) :chattr +a aa.txt——表示 文件内容只能增不能减,如:
在这里插入图片描述
在增加了a 的隐藏属性后,是连删除都无法实现的,所以这时候需要先撤销a权限:chattr -a aa.txt 才能正常删除,+a可用于重要文件防止误删除时使用。
在这里插入图片描述
chattr +i aa.txt ——代表文件不可以做修改,即增和减都不行:
在这里插入图片描述

监控和管理进程

进程的概念:
程序( program)–>使用某种语言开发出来的东西,静态
进程(process)–>当一个程序运行的时候,在内存和cpu里的体现
线程–>进程里的一个单元,一个进程里可以包含多个线程,这多个线程共享进程的内存空间。
在这里插入图片描述
kill -l : 查看所有信号
在这里插入图片描述
ps:查看当前终端的进程
ps aux = ps -ef :查看所有终端的进场 2者实现的效果一样,但ps aux 实现的是ulinux风格,ps -ef 实现的是linux风格
在这里插入图片描述
USER:进程的属主
PID:进程的iD
PPID:父进程
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
NI:进程的NICE值,数值越大,表示较少占用CPU时间;
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的固定内存量(KB)(驻留中页的数量);
TTY:该进程在那个终端上运行(登陆者的终端位置),若与终端无关,则显示(?),若为pts/0等,则表示由网络连接主机进程
WCHAN:当前进程是否正在进行,若为-表示正在进行;
START:该进程被处罚启动时间;
TIME:该进程实际使用CPU运行的san
COMMAND:命令的名称和参数;

D:无法中断的休眠状态(通常IO的进程)
R:正在运行可中在队列中可过行的
S:处于休眠状态
T:停止或被追踪
W:进入内存交换(从内核2.6开始无效)
X:死掉的进程(基本很少见)
Z:僵尸进程
<:优先级高的进程
N:优先级较低的进程
L:有些页被锁紧内存
s:进程的领导者(在它之下有子进程)
l:多进程的(使用CLONE_THREAD,类似NPTL pthreads);
+:位于后台的进程组
ps -ex -o 想单独查看的选项,多项用,隔开即可:如想单独查看pid和cpu:
在这里插入图片描述
lscpu:查看cpu信息
在这里插入图片描述
ps mo 查看选项 pgrep 命令: 查看某个正在运行的命令是在哪个cpu上运行的。 如:查看cat在哪个cpu上运行的,先在其他用户或新的终端运行一个cat 命令 cat /dev/zero > /dev/null (2个都是无底洞文件 可以一直处于写入文件状态),然后ps mo pid,comm,psr pgrep cat 即可,psr表示在第一颗cpu上运行的:
在这里插入图片描述
我们在查询所有进程的时候 用grep筛选,出现的结果会包括grep 本身,如果想过滤掉grep本身 ,则 加一行 grep -v grep (-v是反向筛选,就是说除了grep以外的全部) 如:
在这里插入图片描述
pgrep 命令:快速查看进程的pid,如查看cat: pgrep cat
在这里插入图片描述
pidof 命令:也是快速查看进程的pid,和pgrep命令大致相同。
pgrep和pidof区别:pgrep 可以模糊查询,比如pgrep ca 可以筛选出所有带ca的命令,包括cat,而pidof 是精确查询,就是说比如命令存在,如pidof ca 是筛选不出任何结果的:
在这里插入图片描述

kill -9 pid/`pgrep 命令`:杀死进程 kill -9 pid ,pid是通过pgrep 命令获取 的,
也可以直接kill -9 `pgrep 命令` 杀死进程,如杀死cat进程:kill -9 7662  / kill -9 `pgrep cat`

在这里插入图片描述

killall -9 命令:直接杀死命令,实现功能和kill -9 pid 一样 只是这个想对简单,如杀死cat命令:killall -9 cat 即可:
在这里插入图片描述
前台和后端:先说前台,比如firefox命令,使用了后命令端无法使用其他任何命令,这种称之为前台,这时候ztrl+z 可以让该服务停止,
jobs:查看所有被停止的服务,停止的概念是启动的服务依然存在,只是无法做任何操作。
bg 序号:将已停止的服务更改为在后台运行。如第一个服务则 bg 1 即可。
fg 序号:将通过bg添加到后端运行的服务更改为前台运行。
在这里插入图片描述

命令 &:一开始就直接将前台命令 放到后端运行 如:firefox & 即可,需要注意,运行后仍然是前台的显示,只需回车就恢复正常了
在这里插入图片描述
kill -9 %序号 :杀死后端进程 序号通过jobs查看, 注,一定要加% 否则就杀死了pid为1的进程
在这里插入图片描述
pstree:查看所有父子关系进程
nohup 命令:把命令放到后台不属于任何终端运行。 如某个进程xx有几个子进程a.b.c,如果你杀死了进程xx,则子进程a.b.c也会被删除,这就会带来问题,很多时候我们都是远程连接过去的,如果某个程序需要运行很长时间,如拷贝,正常情况下,我们本地电脑就不能关机了。 这时候就需要用到nohup命令了,吧该任务放到后台运行不属于任何终端运行,但使用nohup命令会自动生成nohup.out文件,这时候就可以使用重定向到/dev/null 目录即可 如 需要无任何终端并后台运行firefox:nohup firefox & > /dev/null &
在这里插入图片描述
tom:直接tom回车即可动态查看进程 默认秒刷新一次,如果需要1秒刷新一次 则 tom -d 1

服务管理

systemctl list- unit- files: 查看所有可用服务
在这里插入图片描述
systemctl list-unit-files --type 服务类型:查看指定服务类型如 查看service类型的服务:systemctl list-unit-files --type service
在这里插入图片描述
如何查看某个服务:如我想查看vsftp服务;systemctl list-unit-files | grep vsftp ,其中service结尾的便是该服务了:
在这里插入图片描述
systemctl start 服务名称:启动某服务,如启动vsftpd(如果知道某服务名称 如上方法可以查看某个服务的方法筛选即可),systemctl start vsftpd 即可;
systemctl stop 服务名称:停止某服务,如停止vsftpd服务,systemctl stop vsftpd即可;
systemctl is- active 服务名称:查询服务状态 服务未启动:unknown , 服务已启动:active。
在这里插入图片描述
systemctl status 服务名称:同样是查询服务状态,比systemctl is-active 更加详细
在这里插入图片描述
所有服务都是存放在:/usr/lib/systemd/system/ 目录下的,在这里可以找到服务文件,并做一系列修改(也急速服务自定义),如启动服务位置等功能。
systemctl restart 服务名称:重启服务,如重启vsftpd:systemctl restart vsftpd;
systemctl is-enabled 服务名称:查看某服务是否开机启动,disabled为开启不自动启动,enabled为开启自启动, 如查看vsftpd是否开启启动:systemctl is- enabled vsftpd :
在这里插入图片描述
systemctl enable 服务名称:开启某服务为开机自启动,如把vsftpd服务设置为开启自启动:systemctl enable vsftpd 即可;
systemctl disable 服务名称:关闭某服务的开机自启动,如把vsftpd服务的开启自启动关闭:systemctl disable vsftpd 即可;
在这里插入图片描述
systemctl mask 服务名称:禁用某服务,当某服务被禁用以后,停止服务后就无法启动了,启动时会报错。 如禁用vsftpd服务:systemctl mask vsftpd , 并且禁用后重新启动报错信息为:
在这里插入图片描述
systemctl unmask 服务名称:开启已禁用的服务。

发布了67 篇原创文章 · 获赞 32 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/cuichongxin/article/details/103130931