linux操作系统
2025-07-07 20:03:25 6 举报
AI智能生成
linux基础
作者其他创作
大纲/内容
shell简介
就是在linux中的命令行<br>相当于windows中的cmd
作用
接收用户的操作(点击图标、输入命令)并进行简单的处理,然后传递给内核<br>
保护内核
调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果
在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入
shell本身也可被其他程序调用,也可以调用其他程序
所以shell才能完全胜任linux的日常管理
常见的shell
sh
最早流行的shell
chs
在sh流行之后广为流传,因语法类似C语言,所以叫csh<br>
tcsh
csh的增强版,加入了命令补全功能,提供了更加强大的语法支持
ash
一个简单的轻量级shell,占用资源少,适合运行于低内存环境
bash
bash shell 是linux的默认shell
保持了对sh shell 的兼容性
拓展了一些命令和参数
不完全和sh兼容,但大多数情况下区别不大,特殊场景可以使用bash代替sh
Linux命令行
在ubuntu系统中
Ctrl+Alt+F3<br>
切换到命令行
Ctrl+Alt+F2<br>
切换回图形界面
命令行结尾提示符
$
是普通用户的提示符
#
是超级用户root的提示符
命令行快捷键
Ctrl+C<br>
终止当前输入,如果命令行中有内容,则终止输入跳转到下一行<br>终止当前进程,终止后不可恢复
TAB<br>
补全当前命令
Ctrl + A<br>
使光标移到最前
Ctrl + E<br>
使光标移到最后
Ctrl + D<br>
删除光标当前字符
Ctrl + L<br>
清除当前屏幕
Ctrl + Z<br>
暂停当前进程,暂停后可恢复
查看Linux服务器IP<br>
ip a
ifconfig
需要在安装ner-tools后才能使用
ssh服务
ssh是一套协议标准
用来实现两台机器之间的安全登录以及安全的数据传送
sudo service ssh start
启用SSH服务<br>
service ssh status
查看ssh的服务运行状态
windows登录linux
需要用到ssh
输入命令:ssh -p 22 用户名@ip<br>
如:ssh -p 22 ubuntu@192.168.32.141<br>
linux基础语法
命令 [选项] [参数]
命令
要执行的操作或程序名称
干什么
选项
用于修改命令行为的开关,通常以短横线(-)或双横线(--)开头
怎么干
参数
命令操作的目标对象或者输入数据,通常是文件名、目录名或文本
在哪干(不太合适)<br>
命令 --help
帮助选项
history
查看linux命令历史记录
使用后用<br>!+数字<br>
快速执行对应的命令
linux系统用户管理
用户标识符
UID<br>
用户ID<br>
GID<br>
用户组ID<br>
角色
管理员用户
UID、GID均为0,用于管理系统,拥有最高权限<br>
普通用户
由root创建,创建后可以登录系统,默认无法创建,修改,删除其他任何管理员下的文件,只能在自己的家目录下进行这些操作,UID从1000-65535<br>
系统用户
安装系统后默认存在,默认不能登录系统,但是系统正常运行必不可少的,方便系统管理,满足相应的系统进程文件的属主要求,如:系统默认的bin、adm、nodoby、mail用户等<br>
/etc/passwd文件
管理用户的UID与GID<br>
字段解释
<br>
1.账号名称
2.密码
密码数据在/etc/shadow中,所以在/etc/passwd中用x代替
3.UID<br>
用户标识符
0(系统管理员)<br>
1-999(系统账号)<br>
1000-65535(可登录账号)<br>
4.GID<br>
用户组标识符
5.用户信息说明栏
类似注释
6.家目录
用户的家目录
7.命令解释器(shell)<br>
shell是一个应用程序,可以给用户配置不同版本的shell
/etc/shadow
管理用户密码等相关数据
字段解释
<br>
1.账号名称
2.密码
是经过编码的密码
3.最近修改密码的日期
记录修改密码前一天的日期,是以1970年1月1日作为1而累加的日期
4.密码不可被修改的天数
记录密码在最后一次更改后需要经过几天才可以再次被修改。
5.密码需要重新修改的天数
必须要在这个天数内重新设置新密码,否则帐号啊的密码将变为过期特性
6.密码需要修改期限前的警告天数
密码快到期的前几天会警告还有几天密码就要过期,图中的是密码到期前7天会提醒用户
7.密码过期后的账号宽限时间(密码失效日)<br>
密码有效期=3.更新日期 + 5.重新修改日期,过了该期限依旧没有更新密码,那么该密码就算过期,过期后可以登录但是登录后系统会强制要求重新设置密码<br>
8.账号失效日期
和第3字段一样都是用1970年以来的总天数,表示这个账号在规定日期之后将无法再使用。
9.保留字段
看以后有没有新功能加入
/etc/skel
存放新用户配置文件的目录
添加新用户时,这个目录下的所有文件都会被自动复制到新添加的用户的家目录下。
该目录下的文件都是隐藏文件(以.开头)<br>
通过增、删、改/etc/skel目录下的文件,我们可为新创建的用户提供统一、标准的初始化用户环境
管理命令
useradd
useradd [选项] [用户名]
一般直接用useradd创建用户
常用选项
-u
用户ID,这个值必须是唯一的<br>
-c
创建用户时添加个人信息
-s
用户登录后使用的shell,若没有指定则默认是/bin/bash
-g
指定对应用户的组,对应的组必须在系统中存在
-r
建立系统账号
-m
自动建立用户的家目录
usermod
usermod [选项] 账号名
修改用户信息
常用参数
-c
接账号说明,在passwd第五栏说明栏加入账号说明
-d
接家目录,修改passwd第六栏家目录
-e
接日期,格式YYYY-MM-DD,改shadow第八栏账号失效日期
-f
接天数,改shadow第七栏密码宽限日期
-g
接初始用户组,修改passwd第四栏GID<br>
-l(小写L)<br>
接账号名称,修改passwd第一栏账号名称
-s
接shell的实际文件,如:/bin/bash或/bin/csh等<br>
-u
接UID数字,修改passwd第三栏UID<br>
-L<br>
暂时冻结使用者的密码,让其无法登录,其实仅改shadow的密码栏
-U<br>
将shadow密码栏的!去掉<br>
userdel
userdel [r] 账号名
删除账户<br>
-r
连同使用者的家目录也一起删除
passwd
设置密码
passwd [选项] [账号名称]
常用选项
-l
lock的意思,会将/etc/shadow第二栏最前面加上!使密码失效<br>
-u
与-l相对,使unlock的意思
-S<br>
列出密码相关参数
-n
后面接天数,多久不可修改密码
-x
后面接天数,多久内必须要修改密码
-w
后面接天数,密码过期前的警告天数
-I(大写i)<br>
后面接日期,密码失效日期
--stdin
可以通过来自前一个管道的数据,作为密码输入
chage
更详细的密码参数显示功能
常用选项
-l:(小写L)<br>
列出该账号详细密码参数
-d:<br>
后面接日期,修改shadow第三栏位(最近一次修改密码的日期),格式YYYY-MM-DD<br>
-E:<br>
后面接日期,修改shadow第八栏位(账号失效日),格式YYYY-MM-DD<br>
-I:(大写i)<br>
后面接天数,修改shadow第七栏位(密码失效日期)<br>
-m:<br>
后面接天数,修改shadow第四栏位(密码最短保留天数)<br>
-M:<br>
后面接天数,修改shadow第五栏位(密码多久需要进行更改)<br>
-W:<br>
后面接天数,修改shadow第六栏位(密码过期前警告日期)<br>
用户组
就是具有相同特征的用户的集合
需要让多个用户具有相同的权限就要创建组
一个用户可以加入到多个组
配置文件
/etc/group
记录GID与组名对应记录<br>
字段解释
<br>
1.组名
2.用户组密码
通常不设置,和用户一样密码信息在/gshadow中,这里用x代替
3.GID<br>
用户组ID<br>
4.此用户组支持的账号名称
就是用户组中组员的用户名
/etc/gshadow
只要用来存储组密码信息
字段与group相同,只有第二个字段使密码栏大部分情况位空或者!<br>
管理命令
groupadd
groupadd [-g gid] [-r] 用户组名称
添加用户组
常用参数
-g
后面接特定的GID,用来直接设置某个GID<br>
-r
建立系统用户组
groupdel
groupdel 用户组名称
删除用户组
用户身份切换
su命令
最简单的身份切换命令,不会切换工作环境
sudo命令
为普通用户提权
通过配置文件来限制用户的权限,可以让普通用户在执行指定的命令或程序使,拥有超级用户的权限
visudo
修改/etc/sudoers让该账号能够使用全部或部分的root命令功能
只有root用户才能使用visudo
字段解释
<br>
1.用户账号
那个账号可以使用sudo这个命令
2.登录者的来源主机名
这个账号可以由那个主机连接到本Linux主机,可以是指定客户端计算机,也可以使ALL所有主机<br>
3.可切换身份
这个账号可以切换成什么身份来执行后续的命令
4.可执行命令
可以用该身份执行什么命令
sudo -l(小写L)<br>
查看当前用户可执行的命令
只有在suders文件里的用户才能使用该选项
linux目录与文件
Linux系统中一切都是文件
根目录(/)<br>
Linux系统中的文件都是从根(/)目录开始,并且按章文件系统层次化标准采用树形结构存放文件。此外文件名和目录名严格区分大小写,且文件名称中不得包含斜杠(/)<br>
部分重要的根目录子目录及其作用
/bin 存放经常使用的命令<br>
/home 用户家目录,linux中,每个用户都有自己的目录,以 用户账号命名<br>
/var 存放着经常会变化的文件,包括各种日志文件<br>
/etc 存放所有的系统管理所需的配置文件和子目录<br>
/root 系统管理员的用户主目录<br>
/usr 非常重要的目录,用户的很多应用程序和文件都放在这个目录下
路径
绝对路径
由根目录(/)开始写起的文件名或目录名称
如;/var/log/sa
相对路径
相对当前路几个的文件写法
如:var/log/sa
就是看开头有无斜杠(/)
/etc/resolv.conf
系统DNS客户端配置文件<br>
可以在这个文件中配置Dns信息
/etc/hostname
主机名配置文件
还可以用nmtui命令进入图形界面修改主机名
/etc/hosts
本地DNS解析文件<br>
SELinux<br>
就是安全强化的Linux<br>
设计目标是为了避免资源的误用
文件
文件拥有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
用户组
可以理解为几个用户的集合
同一个用户组成员可以访问同组的公共资源,不在这个用户的用户在成为这个用户组的成员之前不能访问这个用户组的公共资源
文件权限
UGO<br>
U:文件的所有者<br>
G:文件的属组<br>
O:其他人<br>
rwx<br>表示3个种类的权限,每种权限都会有个数字<br>0表示没有这个权限
r:读权限,数字为4<br>
w:写权限,数字为2<br>
x:执行权限,数字为1<br>
chmod<br>修改权限命令
字符法
chmod [ugoa] [+-=] [文件]<br>
如:chmod u+x,g-x,o=rwx file1<br>
数字法
chmod [数字] [文件]
如:chmod 643 file1<br>
-R<br>
对当前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)<br>
--reference=filename
参照filename的权限来设置权限
chown<br>修改文件所属的用户或组
仅有3种用法
chown 用户名 文件名或目录名
修改文件或目录的所属用户
chown :组名 文件名或目录名<br>
修改文件或目录的所属组
chown 用户名:组名 文件名或目录名<br>
修改文件或目录的所属用户和所属组
umask
系统默认值为022
用来控制创建文件或目录的权限的机制
文件默认权限为666,目录默认权限为777,加入umask=022,则新创建文件的权限为666-022=644,同理,新创建目录的权限为777-022=755
文件属性
ls命令
相当于windows的cmd中的dir命令
-a
显示指定目录下的所有子目录与文件,包括隐藏文件
-l
以列表方式显示文件的详细信息
-h
配合-l以人性化的方式显示文件大小
权限前的第一个字符
<br>
第一个字符代表这个文件是目录,文件或链接文件等
d
目录
-
文件
l
链接文件
b
设备文件里可供存储的周边设备
c
设备文件里的串行端口设备,如键盘、鼠标
cd命令
更改当前工作目录,参数可为相对路径或绝对路径
cd
切换到当前用户的主目录(/home/用户目录)<br>
cd ~<br>
切换到当前用户的主目录(/home/用户目录)
cd .
保持在当前目录不变
cd ..
切换到上级目录
cd -
可以在最近两次工作目录之间来回切换
mkdir
创建指定的目录,可以创建多级目录
-p
可以递归创建目录
rmdir
删除目录
删除的目录必须为空目录或者多级目录
touch
创建文件或修改文件时间
如果文件不存在,可以创建一个空白文件
如果文件存在,可以修改文件的末次修改日期
<br>
rm
删除文件或目录,删除后不能恢复
-f
强制删除,忽略不存在的文件,无需提示
-r
递归删除目录下的内容,删除文件夹必须加此参数
-rf
强制且递归删除文件
mv
移动文件或目录至另一个文件或目录,还可以将目录或文件重命名
-i
如果文件存在,询问用户是否覆盖
-f
如果文件存在,不询问直接覆盖现有目录
cp
将给出的文件或目录复制到另一个文件或目录中
-i
如果复制的文件和另一个文件重名,询问是否覆盖
-f
不询问直接覆盖
-R<br>
复制文件夹
vim文本编辑器
三种模式
命令模式
可以输入快捷键命令
打开方式
vim 文件名
光标置于第一行行首
vim 文件名 +n<br>
光标置于第n行<br>
vim 文件名 +<br>
光标置于末行行首
vim 文件名 +/abc<br>
光标置于与abc匹配的字符串处,abc为任意字符串
光标定位
h
左
j
下
k
上
l
右
0
跳到所在行行首
$
跳到所在行行尾
gg
跳到首行
G
跳到尾行的行首
文本编辑
y
复制
yy
以行为单位复制
x
删除单个字符
dd
以行为单位删除
5dd
删除从光标处开始的5行
p
粘贴
u
撤销
插入模式
用户可往文件中写入内容
a、i、o、s
a:在光标后方输入<br>
i:在光标前方输入<br>
p:另起一行输入<br>
s:删除所在字符再输入<br>
末行模式
输入并执行命令
<br>
查找替换
<br>
三种模式的切换方式
<br>
查看文件内容
cat命令
作用
查看文件内容
编辑新文件
非交互式的编辑追加内容到文件尾部
把多个文件合并成一个新文件
清空文件内容
常用参数
-n
从1开始对所有输出的内容按行编号,不忽略空白行
-b
忽略显示空白行,只显示有内容的行
more命令
<br>
less命令
功能类似more,可以分页显示文件内容,但比more功能强大
less [选项] [文件]
常用选项
-i
搜索时忽略大小写
-N<br>
在每行前输出行号
-p
后面跟被搜索的字符
!
命令调用shell,并执行命令
范例
<br>
head命令
显示文件头部的内容,默认输出文件的开头10行
head [选项] [文件]
常用选项
-n 行数
指定显示的行数
日志文件
重要性
解决系统方面的错误
解决网络服务的问题
过往事件记事本
不同的日志文件
/var/log/messages
系统主日志文件,几乎系统发生的错误信息都记录在这个文件中
/var/log/maillog
记录邮件的往来信息,主要是postfix和dovecot(pop3协议提供者)<br>
/var/log/lastlog
所有账号最近一次登录系统时的相关信息
/var/log/secure
基本只要涉及到账号密码的软件,登录时都会记录在这个文件中
/var/log/dmesg
和系统启动相关,记录系统开机时内核检测产生的各项信息
文件压缩与解压缩
tar命令用于对文件进行打包压缩或解压
tar [选项] [文件]
常用参数
-c
创建压缩文件
-x
解开压缩文件
-t
查看压缩包内有哪些文件
-z
用Gzip压缩或解压<br>
-j
用bzip2压缩或解压
-v
显示压缩或解压的过程
-f
指定文件名
关于路径的参数
-p
保留原始的权限与属性
-P<br>
使用绝对路径来压缩
-C<br>
指定解压到的目录
--exclude=
打包时排除不需要处理的文件或目录
文本过滤
grep命令
从文本文件或管道流数据中筛选匹配的行和数据从文本文件或管道流数据中筛选匹配的行和数据
grep [选项] [匹配模式] [文件名]
常用选项
-v
显示不匹配的行
-n
显示匹配的行和行号
-c
只统计匹配的行数
-i
不区分大小写
管道与重定向
数据流重定向
就是将某个命令执行后应该要出现在屏幕上的数据,给它传输到其他的地方
重定向规则
类型
标准输入(stdin)<br>
代码为0,使用<或<<<br>
标准输出(stdout)<br>
代码为1,使用>或>><br>
标准错误输出(srderr)<br>
代码为2,使用2>或2>><br>
箭头方向表示的是文件流向的方向
>或<表示替换/覆盖,>>或<<表示追加<br>
输出重定向
将helloword写入aaa.txt
echo helloword > aaa.txt<br>
将某个命令的执行结果放入某个文件中
cat aaa.txt >bbb.txt<br>
追加标准输出
把heichao追加到aaa.txt中
echo heichao >> aaa.txt<br>
重定向标准错误输出
把错误信息输入到aaa.txt中
cat ccc.txt >> aaa.txt<br>
输入重定向
在aaa.txt中写入内容
cat > aaa.txt [然后输入自己的内容]<br>
把aaa.txt中的内容写入abc.txt
cat > abc.txt < aaa.txt<br>
<<这个连续的两个小符号,代表的是 [结束的输入字符] 的意思。这样当空行输入eof字符,输入自动结束不用ctrl + D<br>
cat > aa << eof<br>
<br>
查找文件
find命令
find [查找路径] 查找条件操作
查找路径后面可以跟文件类型
常用参数
-name
匹配名称
在当前目录中查找名称为abc.txt的文件
find -name abc.txt
-perm
匹配权限(mode为完全匹配,-mode为包含即可)<br>
-user
匹配所有者
-group
匹配所有组
-mtime -n +n<br>-mmin
匹配修改内容的时间(-n指n天以内,+n指n天以前)<br>
在指定目录下查看修改时间超过15分钟的文件
find -mmin +15<br>
-size
匹配文件大小(+50kb为查找超过50kb的文件,-50kb为查找小于50kb的文件)<br>
在指定目录下按大小查找
find /etc -size +1M<br>
-prune
忽略某个目录
-type
f、d、l、c文件类型
-f
普通文件
在当前目录下查找所有空文件
find -type f -empty
在指定目录下按文件类型查找
find /tmp -type f
-d
目录
-l(小写L)<br>
符号连接
-c
字符设备
管道命令符<br>
|(shift+\)<br>
命令a | 命令b<br>
把前一个命令原本要输出到屏幕的标准正常数据当作后一个命令的标准输入
查看1.txt的内容,并把有admin的行筛选出来,不区分大小写
cat 1.txt | grep admin<br>
软件包管理
Centos
RPM包<br>
最初被称为Red Hat Package Manager,后被命令为RPM
SUSE、Red Hat、Centos等首选软件包格式<br>
命名格式
软件包名称-版本信息-发行号.操作系统版本.硬件平台类型.rpm<br>
RPM<br>
对RPM格式软件包进行安装、查询、更新、升级、卸载以及生成.rpm格式的软件包等<br>
rpm -q[子选项] [软件名]
子选项
-qa
显示当前系统中以RPM方式安装的所有软件列表<br>
-qi
查看指定软件包的名称、版本、许可协议、用途描述等详细信息
-ql
显示指定的软件包在当前系统中安装的所有目录、文件列表
-qf
查看当前指定的文件或目录是由哪个软件包所安装的
查询未安装的软件包信息
rpm -qlp [软件包名]<br>
显示软件包准备安装的所有目录、文件列表
rpm -qpi [软件包名]
显示指定软件包的名称、版本、许可协议、用途描述等详细信息
安装/升级/卸载RPM软件包<br>
RPM [选项] [包名]<br>
常用参数
-i
在当前系统中安装(install)一个新的RPM软件包<br>
-v
显示安装过程中较详细(verbose)的安装信息,有助于了解安装是否成功及出错原因<br>
-h
在安装或升级过程中,以hash记号(“#”)显示安装进度<br>
-e
删除(erase)指定名称的已安装的软件包<br>
-U<br>
升级(upgrade)安装,先卸载旧版,再安装新版软件包,若指定的rpm包并未安装,则系统直接进行安装<br>
--force
强制安装指定的软件包,当需要替换现已安装的软件包及文件、或安装一个比当前使用的软件版本更旧的软件时,可以使用此参数
--nodeps
在安装、升级或删除一个软件包时,不检查与其他软件包的依赖关系
YUM<br>
是改进型的RPM软件管理工具,很好解决了RPM所面临的软件包依赖问题<br>
特点
自动解决依赖关系
对RPM进行分组,并基于组进行安装<br>
引入仓库概念,支持多个仓库
仓库用来存放所有现有的RPM软件包,安装rpm软件是自动在仓库中查找依赖关系并进行安装,仓库可以使用本地,也可以使用网络仓库<br>
yum -y install [包名]
安装软件,-y是参数自动确定
yum -y reinstall [包名]
重新安装
yum -y update [包名]
升级某个软件
yum -y update
更新所有软件
yum -y remove [包名]
卸载软件
yum search 模糊包名
查看模糊包名的软件包
Ubuntu
Deb包
基于Debian GUN/Linux的管理包文件<br>
适用于Ubuntu、Linux mint、KNOPPIX等
deb软件包安装
网上下载好xx.deb软件包
进入到下载的软件包的所在目录,<br>用命令:sudo dpkg -i xx.deb<br>
apt与apt-get区别
依赖处理:apt在依赖处理方面更出色,但apt-get的依赖处理能力已经组后应当日常需求<br>
操作效率:apt支持并行操作,可同时执行多个软件包管理任务,而apt-get只能按顺序执行一个操作<br>
缓存管理:apt使用缓存来存储已下载的软件包,并且有自动缓存管理功能,apt-get需要手动用apt-get clean命令来清理缓存,增加了用户的操作负担<br>
适用场景:apt有简洁、友好的用户界面和高效的并行操作能力,更适合用于日常的软件包管理任务。apt-get有丰富选项和细粒度控制适合用于需要精确控制软件包管理过程的场景下<br>
安装软件包
sudo apt-get install [软件包名]
sudo apt install [软件包名]
卸载软件包
sudo apt remove [软件包名]
卸载指定软件包,但保留其配置文件
完全卸载软件包
sudo apt purge [软件包名]
完全卸载软件包,包括配置文件
升级软件包
sudo apt upgrade
搜索软件包
apt search [软件包名]
搜索软件包名称或描述中包含指定关键词的软件包
显示软件包信息
apt show [软件包名]
显示指定软件包的详细信息,包括版本、大小、描述等
清理过时软件包
sudo apt autoclean
清理所有不再使用的软件包
sudo apt autoremove
更新软件包列表
sudo apt update
用于更新本地软件包信息
列出所有已安装的软件包
apt list --installed
网络管理
网络配置管理
判断使用的时那种服务
用systemctl is-enabled network命令<br>和systemctl is-enabled NetworkManager命令<br>输出enabled说明服务已经启用
network服务
用于服务器上比较稳定的网络环境非常方便,唯一问题是网络改动或切换时,必须重启整个network服务,导致短暂的中断
常用命令
ifconfig
ifup
ifdown
NetworkManager<br>
主要工具
nmtui
可以在shell下执行的简单图形界面,以图形化方式管理网络配置,更简单易懂
想通过nmtui管理网络的前提是网卡可以被NetworkManager管理<br>
使用nmcli device查看
nmcli
以命令行的形式来管理网络,类似ifconfig、ifup等传统命令,优势更明显
nutui本质就是修改配置文件
所以可以直接通过修改配置文件来修改网络配置
配置文件路径 /etc/netplan/90-NM-14f59568-5076-387a-aef6-10adfcca2e26.yaml<br>
修改后需要重新加载网络配置文件
nmcli device connect ens33
ss命令
快速获取套接字统计信息,获取网络的各种信息
ss常用选项
-t:tcp<br>
显示tcp连接
-a:all<br>
显示所有连接
-l:listening<br>
l列出所有打开的网络连接端口
-s:summary<br>
显示Sockets摘要<br>
-p:progress<br>
显示端口对应的进程
-n:numeric<br>
不解析服务名称,可以理解为以数字形式显示
-r:resolve<br>
解析服务名称
-m:memory<br>
显示内存情况
进程管理
进程
PID<br>
进程的ID<br>
孤儿进程<br>
父进程退出,但部分子进程还在运行,这些子进程就是孤儿进程。孤儿进程会被init进程(PID为1)所收养,并由init进程对它们完成状态收集工作
僵尸进程
进程已经退出,但是获取进程信息显示该进程仍在运行
程序
一般为二进制程序,放置在存储媒介中,以物理文件的形式存在
电脑中存储的可以运行的文件
区别<br>
程序是永存的;进程是暂时的
程序是静态的,进程是动态的
进程具有并发性,而程序没有
进程是竞争计算机资源的基本单位,程序不是
进程和程序不是一一对应的
一个程序可以对应多个进程,一个进程可以执行多个程序
命令
ps
ps [选项]
将某个时间点的进程运行情况展示出来
选项
-a
显示终端上的所有进程
-u
显示进程的详细信息,包括cpu和内存的使用率
-x
通常与a这个参数一起使用,可列出较完整信息
-l
较长,较详细的将该PID的信息列出<br>
解释
F
进程标识,说明这个进程的权限,常见号码有4:root权限,1:此进程仅执行复制(fork)而没有实际执行(exec)<br>
S
该进程的状态
R
运行中
S
可被唤醒的睡眠状态
D
不可被唤醒的睡眠状态
T
停止状态
Z(zombie)<br>
僵尸状态,进程已经终止但却ps查看显示还在运行
UID、PID<br>
用户/进程的ID<br>
PPID<br>
进程的父进程PID<br>
C
cpu使用率,单位为百分比
PRI/NI<br>
进程被CPU执行的优先级,数值越小,越快被执行<br>
ADDR<br>
该进程在内存的哪个部分
SZ<br>
代表此进程用掉多少内存
WCHAN<br>
目前进程是否运行,“-”表示正在运行<br>
TTY<br>
登录者的终端位置,若为远程登录则使用动态终端接口名称(pts/n)<br>
TIME<br>
该进程实际使用CPU的时间<br>
CMD<br>
command的缩写,表示造成此进程的触发进程命令是什么
-j
任务的格式
-f
做一个更为完整的输出
ps aux
查看系统所有进程
字段
USER<br>
该进程属于哪个用户
PID<br>
进程ID<br>
%CPU<br>
该进程占用CPU资源百分比<br>
%MEM<br>
该进程占用物理内存百分比
VSZ<br>
该进程使用掉的虚拟内存量(KB)<br>
RSS<br>
进程占用的固定的内存量(KB)<br>
TTY<br>
该进程在哪个终端上运行
STAT<br>
进程目前的状态与ps -l 的标识相同(R/S/T/Z)<br>
START<br>
该进程被触发启动的时间
TIME<br>
该进程实际使用CPU的时间<br>
CMD<br>
command的缩写,表示造成此进程的触发进程命令是什么
top
top -[选项]
-d
后面接秒数,就是整个进程界面的更新的秒数
-b
以批量的方式执行top,通常搭配数据流定向将批量的结果输出为文件
-n
与-b搭配,意义是,需要执行几次top的输出结果
-p
指定PID来执行查看监测<br>
top执行过程中还可以用按键进行交互
<br>
解释
<br>
第一行
目前的时间,开机到目前位置所经过的时间,已经登录系统用户的人数,系统在1,5,15分钟的平均任务负载数值(数值越小代表系统越闲置)<br>
第二行
目前进程的总量与个别进程在什么状态,需要注意最后的僵尸进程数
第三行
显示的是CPU的整体负载,每个项目可使用?查看<br>
第四行和第五行
表示目前的物理内存与虚拟内存的使用情况
第六行
在top进程当中输入命令时,显示状态的地方
<br>
PID<br>
USER<br>
进程所属用户
PR<br>
进程优先级
NI<br>
也与优先级有关
%CPU<br>
cpu使用率
%MEN<br>
内存使用率
TIME+<br>
cpu使用时间的累加
pgrep
pgrep [选项] [程序名]<br>
通过程序名字来查询进程的工具,一般用来判断程序是正在运行
选项
-l
列出程序名和进程ID<br>
-o
进程起始的ID,显示进程号最小的那个<br>
-n
进程终止的ID,显示进程号最大的那个<br>
kill
kill [选项] [进程号]
选项
-l
列出目前kill能够使用的信号有哪些
signal
代表给与后面接的那个任务什么样的指示
-1
重新读取一次参数的配置文件
-2
程序终止信号,用于终止前台进程,相当于CTRL+C<br>
-9
立即强制删除一个任务
通常是在强制删除一个不正常任务时使用
-15
以正常的进程方式终止一项任务
以正常步骤结束一项任务
killall
killall [选项] [信号] 进程名
选项
-i
交互式
-I(大写i)<br>
忽略进程名的大小写
计划任务
类型
系统执行的工作
系统周期性所要执行的工作
如:备份数据、清楚缓存<br>
个人执行的工作
某个用户定期要做的工作
如:每隔10分钟检查服务器<br>
分类
一次性计划任务
只执行一次
at命令专门处理一次性的计划任务
选项
<br>
周期性计划任务
每个一定周期去做相同的事情
crontab专门定义周期性计划任务,周期性循环做任务
选项
<br>
语法
* * * * * [命令]<br>分 小时 日 月 星期
“ * ”表示任何时刻都接受的意思<br>
“ /n ”n代表数字,每个n[单位间隔]的意思<br>
“ - ”就是从几到几<br>
“,”就是几和几<br>
示例:<br>
30 5 * * * ls > /jp/test 2>&1<br>
每天5:30执行ls命令,并把结果输出到/jp/test文件中<br>
2>&1表示执行结果及错误信息<br>
batch系统自行选择空闲时间去执行指定的任务
shell脚本编程
shell就是命令的集合,相当于windows的批处理命令,是提高服务器管理维护的工具
脚本要是可执行文件,需要执行权限才能执行
部分运算符
整数1 -eq 整数2
整数1 = 整数2
整数1 -ne 整数2
整数1 != 整数2<br>
整数1 -gt 整数2
整数1 > 整数2<br>
整数1 -lt 整数2
整数1 < 整数2<br>
整数1 -ge 整数2
整数1 >= 整数2<br>
整数1 -le 整数2
整数1 <= 整数2<br>
字符串的判断
-z 字符串
判断字符是否为空
-n 字符串
判断字符串是否非空
字符串1 == 字符串2
判断字符串1是否等于字符串2
字符串1 !== 字符串2<br>
判断字符串是否不等于字符串2
文件判断
<br>
case语句
case逻辑判断,可以判段多种逻辑条件,并且不限制条件数量,且结构看起来更清晰
case num in <br>value1)<br>[命令1]<br> ;;<br>value2)<br>[命令2]<br> ;;<br>value3)<br>[命令3]<br> ;;<br>value4)<br>[命令4]<br> ;;<br>......<br> value*)<br> [命令*]<br>esac
while语句
while常用循环次数不确定,依赖动态条件
while [条件]<br> do<br>循环体(命令)<br>done
收藏
收藏
0 条评论
下一页