02_实操Linux
开启允许远程连接
Xshell和Xftp:
- Xshell:远程登录操作Linux
- Xftp:上传下载文件
**前提:**Linux开启了sshd服务,开22端口。
用setup指令,然后进入系统服务(system service),找到sshd,看看是否开启。
vi和vim编辑器
所有的Linux系统都会内建vi文本编辑器。
Vim则是具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中广泛使用。
vi和vim常用的三种模式
- 正常模式:在vim打开一个档案就直接进入一般模式了,在这个模式下,可以使用上下左右来移动光标,可以用删除复制等操作。
- 插入模式:按下i,l,o,O,a,A,r,R等任何一个字母之后才可以进入编辑模式,一般来说i即可
- 命令行模式:这个模式中,可以提供你相关的指令,完成读取、存盘、替换、离开vim、显示行号等。
vi和vim快捷键
- 拷贝当前行 yy,拷贝当前行向下的5行 5yy
- 删除当前行 dd,删除当前行向下的5行 5dd
- 在文件中查找某个单词,命令行模式下/关键字,n就是下一个
- 设置文件行号,取消文件行号:set nu和:set nonu
- 文档最末行 G 和 最首行 gg
- 撤销动作指令 u
- 移动到指定行 shift+g
关机&重启命令
- shutdown:
- shutdown -h now:立即关机
- shutdown -h 1:1分钟后关机
- shutdown -r now:现在重启
- halt:关机,其他如上
- reboot:现在重启
- sync:把内存中的数据同步到磁盘
**注意:**无论是重启还是关闭系统,都要先运行sync命令,把内存中的数据写入到磁盘中
用户登录和注销
基本介绍
- 登录尽量少用root账号登录,因为他是系统管理员,最大的权限,避免操作失误。
- 可以用普通用户登录,登录后再用su 用户名 命令来切换管理员身份
- 在提示符下输入logout即可注销用户
使用细节
- logout注销指令在图形运行级别无效,在运行级别3下有效
- 运行级别
用户管理
基本介绍
添加用户
基本语法:
useradd 用户名
细节说明:
- 默认:当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过useradd -d 指定目录 新的用户,给新创建的用户指定家目录
指定/修改密码
基本语法:
passwd 用户名
删除用户
基本语法:
userdel 用户名
细节说明:
- 删除用户,默认保留家目录
- 删除用户,以及删除家目录,加-r参数
一般不会删除家目录
查询、切换用户
查询用户信息
基本语法:
id 用户名
细节说明:
当用户不存在,返回无此用户
切换用户
基本语法:
su - 切换用户名
细节说明:
-
高权限用户切换到低权限用户不需要输入密码
-
用exit可以退回到原来的用户
查看当前用户/登录用户
基本语法:
whoami/who am i
用户组
基本语法:
添加组:groupadd 组名
删除组:groupdel 组名
增加用户的时候直接加上组:useradd -g 用户组 用户名
修改用户组:usermod -g 用户组 用户名
用户和组的相关文件
文件目录 | 作用 | 每行的含义 |
---|---|---|
/etc/passwd文件 | 用户(user)的配置文件,记录用户的各种信息 | 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell |
/etc/shadow文件 | 口令的配置文件 | 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志 |
/etc/group文件 | 组(group)的配置文件,记录Linux包含的组的信息 | 组名:口令:组标识符:组内用户列表 |
实用指令
指定运行级别
基本介绍:
0:关机
1:单用户【找回丢失密码】
- 进入到单用户模式,然后修改root密码,因为进入到单用户模式,root不需要密码就可以登录
- 用enter进入到选择引导界面,然后输入e,进第二个选项kernel,再输入一个e,空格 1,这个1就是让我们进入到单用户模式,再输入b去引导
- 接下来就是进入系统,然后用passwd root修改密码即可
- 有个前提,接触到机房的服务器,而不是通过远程连接
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab的id:5:initdefault:这一行中的数字
CentOS7是在/lib/systemd/system文件中,命令为systemctl set-default runlevel3.target,改数字即可。
**切换到指定运行级别的指令:**init[0123456]
帮助指令
- man获得帮助信息:
- 基本语法:man[命令或配置文件](功能描述:获得帮助信息)
- 案例:查看ls命令的帮助信息,man ls
- help指令
- 基本语法:help 命令(功能描述:获得shell内置命令的帮助信息)
- 案例:查看cd命令的帮助信息,help cd
- 直接百度即可。
文件目录类
-
pwd指令:
- 基本语法:pwd(显示当前工作目录的绝对路径)
-
ls指令:
- 基本语法:ls[选项][目录或是文件]
- 常用选项:
- -a:显示当前目录所有的文件和目录,包括隐藏的
- -l:以列表的方式显示信息
- -h:人容易阅读的格式
-
cd指令:
- 基本语法:cd[参数](切换到指定目录)
- 常用参数:
- cd~或者cd回到自己的家目录
- cd..回到上一级目录
-
mkdir指令:
- 基本语法:mkdir[选项]要创建的目录
- 常用参数:
- -p:创建多级目录
-
rmdir指令
- 基本语法:rmdir[选项]要删除的空目录
- 注意:
- rmdir删除的是空目录,如果有内容是无法被删除的,如果要删除有目录的目录,需要用rm -rf 要删除的目录
-
touch指令
- 基本语法:touch 文件名称(创建文件,可以一次性创建多个)
-
cp指令
- 基本语法:cp[选项] source dest
- 常用选项:
- -r:递归复制整个文件夹
- 用\cp可以强制覆盖,不需要每次都y
-
rm指令
rm指令移除文件或目录
- 基本语法:rm[选项] 要删除的文件或目录
- 常用选项:
- -r:递归删除整个文件夹
- -f:强制删除不提示
- 用-f参数可以强制删除不提示
-
mv指令
mv移动文件与目录或重命名
- 基本语法:
- mv oldNameFile newNameFile(重命名)
- mv /temp/movefile /targetFolder(移动文件)
- 基本语法:
-
cat指令
cat查看文件内容
- 基本语法:cat[选项]要查看的文件
- 常用选项:
- -n:显示行号
- 使用细节:
- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令|more,分页显示
-
more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
- 基本语法:more 要查看的文件
- 操作说明:
- 空白键:向下翻动一页
- Enter:向下翻动一行
- q:立即离开more,不再显示文件内容
- Ctrl+F:向下滚动一屏
- Ctrl+B:返回上一屏
- =:输出当前行的行号
- :f:输出文件名和当前行的行号
-
less指令
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。
less指令在显示文件内容时,并不是一次将整个文件加载之后才显示的,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
- 基本语法:less 要查看的文件
- 操作说明:
- 空白键:向下翻动一页
- pagedown:向下翻动一页
- pageup:向上翻动一页
- /字符串:向下搜寻【字符串】的功能;n:向下查找; N:向上查找
- ?字符串:向上搜寻【字符串】的功能;n:向上查找; N:向下查找
- q:离开less这个程序
-
重定向和追加(>指令和>>指令)
>输出重定向
>>追加
-
基本语法:
指令 功能描述 ls -l > 文件 列表的内容写入文件a.txt中(覆盖写) ls -al >> 文件 列表的内容追加到文件aa.txt的末尾 cat 文件1 > 文件2 将文件1的内容覆盖到文件2 echo "内容" >> 文件 -
主要就是>和>>,用来写东西到文件中
-
-
echo指令
echo输出内容到控制台
- 基本语法
- echo [选项][输出内容]
- 实例:输出当前环境变量:echo $PATH
- 基本语法
-
head指令
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
- 基本语法
- head 文件 (查看文件头10行内容)
- head -n 5文件 (查看文件头5行内容,5可以是任意数字)
- 基本语法
-
tail指令
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容
- 基本语法:
- tail文件(查看文件的后10行内容)
- tail -n 5 文件(查看文件的后5行内容,5可以是任意数字)
- tail -f 文件(实时追踪该文档的所有修改)
- 基本语法:
-
ln指令
软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
- 基本语法:
- ln -s[原文件或目录][软链接名](给原文件创建一个软链接)
- 细节说明:
- 当我们使用pwd指令查看目录时,仍然看到的是软链接所在的目录。
- 基本语法:
-
history指令
查看已经执行过的历史命令,也可以执行历史指令
- 基本语法:
- history:查看已经执行过的历史命令
- history 10:查看最近10条历史命令
- ! 5 :执行历史编号为5的历史命令,这里5可以是任意history中的编号
- 基本语法:
时间日期类
-
date指令
date指令显示当前日期
- 基本语法
- date:显示当前时间
- date +%Y:显示当前年份
- date +%m:显示当前月份
- date +%d:显示当前是哪一天
- date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒
- 基本语法
-
date指令-设置日期
- 基本语法
- date -s 字符串时间
- 实例:
- 设置系统当前时间,比如date -s "2019-11-11 11:22:22"
- 基本语法
-
cal指令
查看日历指令
- 基本语法
- cal[选项] 不加选项,显示本月日历
- cal 2020 则是2020年的日历
- cal 12 2020 则是2020年12月的日历
- cal 8 12 2020 则是2020年12月8日的日历
- 基本语法
搜索查找类
-
find指令
find指令将从指令目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端
-
基本语法:
-
find[搜索范围][选项]
-
选项说明:
选项 功能 -name<查询方式> 按照指定的文件名查找模式查找文件 -user<用户名> 查找属于指定用户名所有文件 -size<文件大小> 按照指定的文件大小查找文件,+n大于,-n小于,n等于,文件大小单位(k,M...)
-
-
locate指令
locate指令可以快速定位文件路径。
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。
locate指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确度,管理员必须定期更新locate时刻。
- 基本语法
- locate 搜索文件
- 特别说明
- 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
- 基本语法
-
grep指令和管道符号|
grep过滤查找
|管道符号,表示将前一个命令的处理结果输出传递给后面的命令处理
-
基本语法
- grep [选项] 查找内容 源文件
-
常用选项
选项 功能 -n 显示匹配行及行号 -i 忽略字母大小写 -
例子
- cat a.txt | grep -n hello
-
压缩和解压类
-
gzip/gunzip指令
- 基本语法
- gzip 文件(压缩文件,只能将文件压缩为*.gz文件不保留源文件)
- gunzip 文件.gz(解压文件)
- 基本语法
-
zip/unzip指令
- 基本语法
- zip [选项] XXX.zip 将要压缩的内容(压缩文件和目录的命令)
- unzip [选项] XXX.zip (解压文件)
- zip常用选项
- -r:递归压缩,即压缩目录
- unzip常用选项
- -d <目录> :指定解压后文件的存放目录
- 基本语法
-
tar指令
-
基本语法
- tar [选项] XXX.tar.gz 打包的内容(打包目录,压缩后的文件格式为.tar.gz)
-
选项说明:
选项 功能 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件 -
实例:
- 把多个文件打包为a.tar.gz:tar -zcvf a.tar.gz a1.txt a2.txt
- 将a.tar.gz解压到指定目录:tar -zxvf a.tar.gz -C /opt/tmp
-
组管理和权限管理(重点)
用户配置文件:/etc/passwd
密码登录信息:/etc/shadow
组配置文件:/etc/group
linux每个用户必须属于一个组,不能独立于组外。
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
文件/目录所有者
一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者
- 查看文件的所有者:ls -ahl
- 修改文件的所有者:chown 用户名 文件名
组的创建
groupadd 组名
创建完后可以用useradd -g 组名 用户名来新建组的用户
文件/目录所在组
- 查看文件的所在组:ls -ahl
- 修改文件的所在组:chgrp 组名 文件名
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
改变用户所在组
- usermod -g 组名 用户名
- usermod -d 目录名 用户名 改变该用户登录的初始目录
权限的基本介绍
ls -l中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
说明:
- 第0位确定文件类型
- -:普通文件
- l:软链接
- d:目录
- b:块设备【硬盘】
- c:字符设备【键盘、鼠标】
- p:管道
- s:套接字
- 第1-3位确定所有者(该文件的拥有者)拥有该文件的权限。——User
- 第4-6位确定所属组(同用户组的)拥有该文件的权限。——Group
- 第7-9位确定其他用户拥有该文件的权限。——Other
- 第10位的说明:
- 如果是文件,表示硬链接的数,如果是目录则表示该目录的子目录个数
- 第11位:所有者
- 第12位:所在组
- 第13位:文件大小,如果是目录则显示4096
- 第14位:文件最后的修改时间
rwx权限详解
rwx作用到文件:
- r代表可读(read):可读、查看
- w代表可写(write):可以修改,但不代表可以删除文件,删除文件的前提是对该文件所在的目录有写权限,才能删除该文件。
- x代表可执行(execute):可以被执行
rwx作用到目录:
- r代表可读(read):可以读取,ls查看目录内容
- w代表可写(write):可以修改,目录内创建+删除+重命名目录
- x代表可执行(execute):可以进入该目录
可以用数字表示权限:
x = 1
w = 2
xw = 1+2 = 3
r = 4
rx = 4+1 = 5
rw = 4+2 = 6
rwx = 4+2+1 = 7
修改权限(chmod)
+、-、=变更权限
u:所有者
g:所在组
o:其他人
a:所有人(u、g、o总和)
- chmod u=rwx,g=rx,o=x 文件或目录名
- chmod o+w 文件或目录名
- chmod a-x 文件或目录名
数字变更权限
chmod 751 文件目录名
修改文件所有者(chown)
- chown newowner file 改变文件的所有者
- chown newowner:newgroup file 改变用户的所有者和所有组
- -R:如果是目录,则使其下所有的子文件或目录递归生效
修改文件所在组(chgrp)
- chgrp newgroup file改变文件的所有组
- -R:如果是目录,则使其下所有的子文件或目录递归生效
定时任务调度
crond任务调度
crontab进行定时任务的设置
-
概述
任务调度是指系统在某个时间执行的特定的命令或程序
任务调度的分类有:
- 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等。
- 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
-
基本语法
- crontab[选项]
-
常用选项
选项 描述 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 -
参数细节说明
项目 含义 范围 第一个* 一小时当中的第几分钟 0-59 第二个* 一天当中的第几个小时 0-23 第三个* 一个月当中的第几天 1-31 第四个* 一年当中的第几个月 1-12 第五个* 一周当中的星期几 0-7(0和7都代表星期日) -
特殊符号说明
特殊符号 含义 * 代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思 , 代表不连续的时间。比如"0 8,12,16 * * * 命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令 - 代表连续的时间范围。比如"0 5 * * 1-6 命令",代表在周一到周六的凌晨5点0分执行命令 */n 代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟就执行一遍命令 -
特定时间执行任务案例
时间 含义 45 22 * * * 命令 在22点45分执行命令 0 17 * * 1 命令 每周一的17点0分执行命令 0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令 40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令 */10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令 0 0 1,15 * 1命令 每月1号和15号,每周一的0点0分都会执行命令。
注意:星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易让人混乱。 -
crond相关指令:
- crontab -r:终止任务调度
- crontab -l:列出当前有那些任务调度
- service crond restart [重启任务调度]
-
案例1:
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e命令
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt
意思是每小时的每分钟执行一次 ls -l /etc/ > /tmp/to.txt命令
-
案例2:
每个1分钟,就把当前日期追加到/tmp/mydate文件中
-
先编写一个文件 mytask1.sh
date >> /tmp/mydate
-
给mytask.sh一个可执行权限
-
crontab -e
*/1 * * * * /root/Desktop/mytask1.sh
-
完成
-
-
案例3:
每天凌晨2点,备份mysql的testdb数据库,备份到mydb.bak文件中
-
编写脚本 mytask2.sh
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
-
改可执行权限
-
crontab -e
0 2 * * * /home/mytask1.sh
-
完成
-
Linux磁盘分区、挂载
分区基础知识
分区的方式:
- mbr分区
- 最多支持4个主分区
- 系统只能安装在主分区
- 扩展分区要占用一个主分区
- MBR最大支持2TB,但拥有最好的兼容性
- gpt分区
- 支持无限多个主分区(但操作系统可能限制,如windows下最多128个分区)
- 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
- windows7 64位以后支持gpt
Linux分区
- 对于Linux来说,无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫做“载入”的处理方式,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时候要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明
-
Linux硬盘分为IDE硬盘盒SCSI硬盘,目前基本上是SCSI硬盘
-
对于IDE硬盘,驱动器标识符为“hdx~”
- “hd“表明分区所在设备的类型,这里是指IDE硬盘了。
- “x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)
- “~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
-
对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd“来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
可以用lsblk -f或lsblk指令来查看当前系统的分区和挂载的情况:
挂载新硬盘
虚拟机中增加硬盘步骤(挂载到/home/newdisk)
- 虚拟机添加硬盘
- 虚拟机菜单中,设置,设备列表里添加-->硬盘,修改磁盘大小,重启系统生效。
- 分区
- fdisk /dev/sdb
- m:显示命令列表
- p:显示磁盘分区 同 fdisk -l
- n:新增分区
- d:删除分区
- w:写入并退出
- q:不保存退出
- 说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入并退出,若不保存退出输入q。
- fdisk /dev/sdb
- 格式化
- mkfs -t ext4 /dev/sdb1
- 其中ext4是分区文件系统类型
- 挂载
- 先创建/home/newdisk
- 挂载mount /dev/sbd1 /home/newdisk
- 卸载用umount 设备名称或者挂载目录
- 设置可以自动挂载(永久挂载)
- 如果不设置自动挂载,那么重启了就没有挂载,因为是临时挂载
- vim /etc/fstab 这里记录了分区以及挂载点的情况
- 拷贝一份之前的格式,然后UUID=xxx删除,改为/dev/sdb1 /home/newdisk 最后两位0 0
- 添加完成后,执行mount -a即刻生效
磁盘情况查询
- 查询系统整体磁盘使用情况
- df -h
- 查询指定目录的磁盘占用情况
- du -h /目录
- 默认为当前目录
- 参数:
- -s:指定目录占用大小汇总
- -h:带计量单位
- -a:含文件
- --max-depth=1:子目录深度
- -c:列出明细的同时,增加汇总值
常用指令:
-
统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
- grep匹配开头为-的文件类型,也就是文件
- wc是用于统计的指令
-
统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
-
统计/home文件夹下文件的个,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l
ls -lR:R表示递归
-
统计文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep "^d" | wc -l
-
以树状显示目录结构
yum install tree安装tree指令
tree 目录名
网络配置
Linux网络配置原理图:
查看网络IP和网关
查看虚拟网络编辑器:
虚拟机的编辑-->虚拟网络编辑器
修改IP
修改虚拟网卡的IP
虚拟网络编辑器-->修改VMnet8 NAT模式--> 子网IP
查看网关
虚拟网络编辑器-->修改VMnet8 NAT模式--> NAT设置
查看windows环境中的VMnet8网络配置(ipconfig指令)
- ipconfig查看
- 打开网络和共享中心-->更改适配器--> VMnet8右键属性--> IPv4
Linux网络环境配置
第一种方式(自动获取):
登录后,通过界面来设置自动获取IP,缺点是每次自动获取的ip地址可能不一样。
系统--> 首选项--> 网络连接--> 编辑--> 自动链接勾上即可
第二种方式(指定固定的IP):
直接修改配置文件来指定IP,并可以连接到外网;
编辑/etc/sysconfig/network-scripts/ifcfg-eth0
重启服务service network restart
CentOS7文件为ifcfg-ens33,重启网络为systemctl restart network
进程管理
进程的基本介绍
- 在Linux中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在。前台与后台,所谓的前台进程就是用户目前的屏幕上可以进行操作的。后台就是实际在操作的,但由于屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才会结束。
显示系统执行的进程
ps命令是用来查看目前系统中有哪些正在执行的进程以及执行情况。可以不加任何参数;
ps命令显示的信息选项:
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消耗的CPU时间 |
CMD | 正在执行的命令或进程名 |
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
常用的几个指令:
- ps -aux|more
- ps -aux|grep 进程名
ps详解:
一般用ps -aux|grep xxx
- System V展示风格
- USER:用户名称
- PID:进程号
- %CPU:进程占用CPU的百分比
- %MEM:进程占用物理内存的百分比
- VSZ:进程占用的虚拟内存大小(单位:KB)
- RSS:进程占用的物理内存大小(单位:KB)
- TT:终端名称,缩写
- STAT:进程状态
- S:睡眠
- s:表示该进程是会话的先导进程
- N:表示进程拥有比普通优先级更低的优先级
- R:正在运行
- D:短期等待
- Z:僵死状态
- T:被跟踪或者被停止等等
- STARTED:进程的启动时间
- TIME:CPU时间,即进程使用CPU的总时间
- COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
用ps -ef | more显示的是父进程信息,PPID是父进程的PID
- -e表示所有进程
- -f全格式
ps -ef | grep xxx
- 是BSD风格
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- C:CPU用于计算执行优先级的因子。
- 数值越大,表明进程是CPU密集型运算,执行优先级会降低。
- 数值越小,表名进程是I/O密集型运算,执行优先级会提高
- STIME:进程启动的时间
- TTY:完整的终端名称
- TIME:CPU时间
- CMD:启动进程所用的命令和参数
终止进程kill和killall
若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源的时候,此时可以考虑停止该进程。
使用kill命令来完成此项任务。
kill [选项] 进程号(通过进程号来杀死进程)
killall 进程名称(通过进程名车功能来杀死进程,也支持通配符,这在系统因负载过大而变慢的时候很有用)
常用选项:
-9:表示强迫进程立即停止
案例:
- 踢掉某个非法登录用户
- 先ps -aux | grep sshd
- 找到要踢出的用户进程号
- kill 进程号
- 终止远程登录服务sshd,在适当的时候再次重启sshd服务
- ps -aux | grep sshd
- kill进程号即可
- 终止多个gedit编辑器
- killall gedit
- 强制杀掉一个终端
- ps -aux | grep bash
- 找到/bin/bash就是个终端
- kill -9 进程号
查看进程树pstree
基本语法:
pstree [选项],更直观查看进程信息
常用选项:
- -p:显示进程的PID
- -u:显示进程的所属用户
服务(service)管理
服务[service]本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。
service管理指令
service 服务名 start|stop|restart|reload|status
systemctl【CentOS7】
例子:
查看防火墙情况,关闭和重启防火墙:
service iptables status
service iptables stop
service iptables restart
可以在windows命令行用telnet ip地址 端口 来测试linux的端口是否可以访问(可能默认没有开,可以到系统设置-->控制面板-->程序和功能-->启用和关闭Windows功能-->开启telnet )
用service指令开启和停用服务只是暂时的,重启之后还是会恢复原来的状态,如果希望开启或关闭状态永久生效,需要用chkconfig指令
chkconfig指令
通过chkconfig指令可以给每个服务的各个运行级别设置自启动/关闭
- 查看服务chkconfig --list | grep xxx
- chkconfig 服务名 --list
- chkconfig --level 5 服务名 on/off
注意:chkconfig重新设置服务之后,需要重启reboot才能生效。
查看服务名
方式1:使用setup指令 --> 系统服务 就可以看到
方式2:/etc/init.d/服务名称
服务的运行级别(runlevel)
查看或修改默认级别:vi /etc/inittab
Linux系统有7种运行级别(runlevel):常用的级别是3和5
- 0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动
- 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 2:多用户状态(没有NFS),不支持网络
- 3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
- 4:系统未使用,保留
- 5:X11控制台,登录后进入图形GUI模式
- 6:系统正常关闭并重启,默认运行级别不能设置为6,否则不能正常启动
开启的流程说明:
动态监控进程
top与ps命令和相似,都是用来显示正在执行的进程。
top与ps最大的不同就是在于top在执行一段时间可以更新正在运行的进程。
基本语法:
top [选项]
选项说明
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新。默认是3秒 |
-i | 使top不显示任何闲置或僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作说明:
操作 | 功能 |
---|---|
P | 以CPU的使用率排序(默认) |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
u | 输入用户名,可以监视指定用户的进程情况 |
k | 输入要结束的进程号,即可结束进程 |
监控网络状态
查看系统网络情况用netstat指令
基本语法:
netstat [选项]
选项说明:
- -an:按一定顺序排列输出
- -p:显示哪个进程在调用
一般用netstat -anp|grep xxx 即可
检测主机连接命令ping:
是一种网络检测工具,主要用于检测远程主机是否正常,或两部主机间的介质是否为断、网线是否脱落或网卡故障。
如:ping 对方的ip地址
RPM
rpm包的管理
一种用于互联网下载包的打包及安装工具,它包含在某些Linux发行版中。
他生成具有.rpm扩展名的文件。
RPM是RedHat Package Manger(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但是理念是通用的。
Linux发行版都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。
rpm包的简单查询指令:
- 查询已安装的rmp列表:rpm -qa | grep xx
rpm包名基本格式:
一个rpm包名:firefox-52.8.0-1.el6.centos.x86_64.rpm
名称:firefox
版本号:52.8.0-1
适用操作系统:el6.centos.x86_64,表示centos6.x的64位系统
如果是i686、i386表示32位系统,noarch表示通用。
rpm包的其他查询指令:
i:用来展示详细信息
l:用于展示包安装了哪些文件
f:用于展示文件属于哪个rpm包的,与l相反
- rpm -qa:查询所安装的所有rpm软件包
- rpm -qa | more
- rpm -qa | grep X[rpm -qa | grep filefox]
- rpm -q 软件包名:查询软件包是否安装
- rpm -q firefox
- rpm -qi 软件包名:查询软件包信息
- rpm -qi file
- rpm -ql 软件包名:查询软件包中的文件
- rpm -ql firefox
- rpm -qf 文件全路径名:查询文件所属的软件包
- rpm -qf /etc/passwd
- rpm -qf /root/install.log
卸载rpm包
基本语法:
rpm -e rpm包的名称
细节讨论:
- 如果其他软件包依赖于你要卸载的软件包,卸载的时候会产生错误信息
- 如:rpm -e foo
- removing these packages would break dependencies:foo is needed by bar-1.0-1
- 如果我们就是要删除foo这个rpm包,可以增加参数 --nodeps,就可以强制卸载,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
安装rpm包
基本语法:
rpm -ivh rpm包全路径名称
参数说明:
- i:install安装
- v:verbose提示
- h:hash进度条
可以把CentOS7的iso镜像挂载到虚拟机上,然后在/media目录把指定的rpm包复制出来,再用rpm -ivh rpm包 进行安装。
YUM
yum是一个Shell前端软件包管理器。
基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
yum的基本指令
- 查询yum服务器是否有需要安装的软件
- yum list | grep xx软件列表
- 安装指定的yum包
- yum install xxx 下载安装
评论区