md、pdf 格式笔记
链接: https://pan.baidu.com/s/1ix9YSR4oXtR4EXMfXPFmQw?pwd=nrxx
目录创建指令 mkdir
-
创建目录
mkdir [目录名] mkdir -p
-
创建多级目录,若前缀目录存在 则直接覆盖
-
不同级目录可 重名
mkdir -p [目录名1/目录名2/...]删除指令 rmdir
-
只能删除 空目录,如果删除的目录下不为空(有文件or目录)则都会删除失败
rmdir [目录名]
-
只能删除 文件
rm [文件名]
-
强制 删除指定目录(包括此目录下的所有文件、目录) 和 文件
-
-r : 递归删除整个文件夹
-
-f : 强制删除不提示
rm -rf [目录]
-
系统重启
-
系统关机,需要当前用户为Root
-
创建空文件
-
touch [文件名称.后缀]
-
显示当前目录文件指令
-
搭配如下指令可实现各种输出样式
复制指令 cp
-
复制此文件 并 指定命名文件名
cp [目标文件名] [复制粘贴后文件名]
-
若指定命名文件名时 附带上目录,则复制粘贴到指定目录下( 注意!注定目录必须存在!)
cp [目标文件名] [目录1/.../复制粘贴后文件名 ] #目录1...都必须存在
-
移动文件或目录 到指定目录下
mv [文件 or 目录] [目录1/目录2...]
-
如果移动文件时候指定了文件名,则移动并重命名
mv [文件] [目录1/../指定文件名]
-
只查看文件信息,不能够修改
cat [目录1/.../文件]
- cat -n
-
查看文件信息的同时显示行号
cat -n [..文件]
-
-
less指令用来分屏查看文件内容,只根据需要显示的内容进行加载,对于显示大型文件具有小高的效率
-
less指令输入后 会进入less程序控制台
less [..文件]
-
less程序控制台中的指令
操作 功能说明 空白键 向下翻动一页 [pagedown] 向下翻动一页 [pageup] 向上翻动一页 / 字串 向下搜寻 [字串] 的功能 n:向下查找; N:向上查找 ? 字串 向上搜寻 [字串] 的功能 n:向下查找; N:向上查找 q 离开 less程序 控制台
-
echo 输出内容到控制台
# 1 显示系统变量值 echo [$系统变量名] # 2 显示字符串到控制台上 echo ["字符串"]
-
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
# 1.显示文件的前10行内容 head [文件名] #2. 自定义显示几行文件头部内容 head -n [数字] [文件名]
-
tail 用于显示文件的 尾部 部分内容,默认情况下 tail 指令显示文件的尾部10行内容
# 1.显示文件的前10行内容 tail [文件名] #2. 自定义显示几行文件头部内容 tail -n [数字] [文件名] -
tail -f 实时追踪该 文件的 任意更新
tail -f [文件名]
-
> 覆盖 >> 追加
-
若覆盖、追加的文件不存在,则自行创建。
[指令(所显示的内容)] > [文件] # 覆盖 [指令(所显示的内容)] >> [文件] # 追加 #例如: cat [文件] > [文件]
-
查看所有已经执行过历史的命令(带行号)
-
可以指定执行某一行的命令 使用 ![行号]
# 查看 指定行数 最近执行过的命令 histry [行数] # 查看 所有 最近执行过的命令 history # 执行对应行号的指令 ![指定行号]
ln -s
-
将某个目录或文件进行 软链接(相当于window的快捷方式)
# 设置软链接 ln -s [原文件 or 目录] [指定软链接名]
-
删除方式 依然使用 rm 与删除文件一样
当使用pwd查看当前目录时候,会看见以 软链接名称 显示的目录
-
显示日历,输入任意两位正整数 可显示当前世纪年份的日历
-
若想显示具体某年日历 直接指示出具体年份 eg:cal 2025
# 显示当前世纪年份的日历 cal [两位数] eg : cal 25 # 显示2025年的日历 # 显示具体年份的日历 cal [具体年份]
-
显示当前日期
基本语法 显示内容 date 显示当前时间 date +%Y 显示当前年份 date +%m 显示当前月份 date +%d 显示当前几号 [自定义] date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒 -
自定义样式只需有保证 +%Y、%m、%d...不改变 ,即可自定义各种样式,严格区分大小
-
%h 是当前年份后两位
-
-
设置当前系统时间
date -s ["字符串时间"]
-
find [目录] -name [文件名] 按照 名称 寻找 文件
-
find [目录] -user [用户名] 按照 用户名 寻找属于此用户的所有文件
-
find [目录] -size [文件大小] 按照 文件大小寻找此大小的文件
-
文件大小的单位可填写的有K、M、G
-
-
+[文件大小]大于
-
-[文件大小]小于
-
-
=[文件大小]等于
-
locate基于update程序将硬盘中所有文件建立一个索引数据库进行查询,所以在第一次运行时,必须使用updatedb指令创建locate数据库
-
locate在数据库寻找;find从系统磁盘上找
# 第一次执行 updatedb locate [指定文件名]
-
查询某个指令在哪一个文件下
which [指令]
-
对指定文件下的数据进行 过滤查询 也就是
-
第一种写法
[任意内容显示指令] | grep ["字符串"] #只查询匹配字符串的所在行 # 例 ls | grep abc #查询匹配abc的所在行 -
第二种写法
grep ["字符串"] [文件]
-
在grep后面指定
-
-n 显示匹配行号
-
-i 忽略查询字符串中的字母大小写
#代表既显示行号 又忽略字母大小 grep -ni ["字符串"] [文件] cat [文件] | grep -in ["字符串"] #只查询匹配字符串的所在行 -
-
-
用于压缩文件,只能压缩为.gz压缩包
gzip [目录/../指定压缩文件名.zip] [目标文件]
-
值得注意的是:不指定则按照原有文件名命名
-
用于解压文件,只能解压为.gz压缩包
gunzip [目标.gz压缩包]
-r、-d
zip-
用于压缩文件,只能压缩为.zip压缩包
zip [../指定压缩文件名.zip] [目标文件名]
-
搭配 -r 代表对某个目录进行递归压缩也就是把目录下所有文件进行压缩 即压缩目录
zip -r [目标目录]
-
用于解压文件,只能解压为.zip压缩包
unzip [../目标.zip压缩包]
-
搭配 -d 可以指示压缩到指定目录下进行存放
unzip -d [指定存放目录] [../目标.zip压缩包]
挺全能的
tar-
打包,最后打包的文件为 tar.gz 文件
tar [选项] [指定.tar.gz文件名]
-
选项 功能 -c 产生.tar打包文件 -v 显示详细文件信息 -f 指定压缩后文件名 -z 打包同时压缩 -x 解.tar.gz 压缩包
-
组的添加,需要root的权限
groupadd [组名]
-
查看当前文件所在组
ls -l
-
修改 文件或目录 的所在组
chgrp [组名] [文件名/目录名]
-
改变用户所在组
usermod -g [组名] [用户名]
-
改变当前用户登录的 初始目录
-
值得注意的是:用户需要有进入到新目录的权限
usermod -d [目录名] [用户名]
| r | 代表 可读取查看 |
|---|---|
| w | 代表 可写、修改 但不代表可以删除,删除一个文件前提是对该文件所在目录有写权限,才能删除此文件 |
| x | 代表 可执行 |
| r | 代表 可以读取,ls指令可以查看目录内容 即ls指令 |
|---|---|
| w | 代表 可写,可以修改,对目录创建+删除+重命名目录 |
| x | 代表可执行,可以进入此目录 即cd指令 |
| 前缀位 | 表示含义 |
|---|---|
| 0位 | 文件类型:- 普通文件, l 链接, d 目录, c 字符设备文件, b 块设备 |
| 1-3位 | 表明文件所有者拥有该文件的权限 - User |
| 4-6位 | 所属组拥有该文件的权限- Group |
| 7-9位 | 其他用户拥有该文件的权限 - Other |
方式一:
-
通过chmod指令,可以修改 文件/目录 的权限
-
文件操作符:r 读 w 写 x 可执行
-
目标对象:u 所拥有者; g 所拥有组; o 其他者; a 任一者
# 更改目标对象的权限(若有多个 用','分割) chmod [目标对象]=[文件操作符] [目标文件/目录] 1 )# 对所拥有者赋写、读、执行权限, 所拥有组赋予读、可执行权限,其他者赋可执行权限 chmod u=rwx,g=rx,o=x ab.txt-
权限操作符+ -
# 更改目标对象的权限(若有多个 用','分割) chmod [目标对象][权限操作符][文件操作符] [目标文件/目录] 1 )# 对其他者附上可写权限 chmod o+w ab.txt 2 )# 对任一者附可执行,对其他者赋可读 chmod a+x,o+r ab.txt
-
方式二:
-
通过数字变更权限
-
r=4 w=2 x=1 相加起来的数字就是对一个目标对象的选前变更操作
#本例子采用对比方式更容易理解 chmod u=rwx,g=rx,p=x [目标文件/目录] #1. 相对于 chmod 751 [目标文件/目录] chmod u=r,g=x [目标文件/目录] #2. 相对于 chmod 41 [目标文件/目录] # 3、5没有任何意义, 0是不赋任何权限
-
修改 文件 所有者
chown [目标对象] [目标文件] # 将abc.txt文件所有者更改为 HR chown HR abc.txt -
修改 目录 所有者
-
-R 如果是目录 则 其所有子文件/目录都 递归 生效
chown [目标对象]-R [目标目录] # 将 abc目录下(不包括abc)的所有者更改为 hjy chown -R hjy abc/ # 将 abc目录下(包括abc)的所有者更改为 hjy chown -R hjy abc
-
-
crond会按周期性执行,而不是只执行一次!
-
crond -e 编辑crontab定时任务(输入完后会进入指令区)
-
crond -l 查询crontab任务
-
crond -r 删除当前用户所有crontab任务
| 第几个 * | 含义 | 范围 |
|---|---|---|
| 第一个 | 分钟 | 0-59 |
| 第二个 | 小时 | 0-23 |
| 第三个 | 天数 | 1-31 |
| 第四个 | 月份 | 1-12 |
| 第五个 | 周几 | 0-7 |
第五个的 * 范围中的 0 、7 都代表星期日
| 符号 | 含义 |
|---|---|
| * | 任何时间。第一个* 代表每分钟都执行一次 |
| , | 不连续的时间0 1,2 * * * 代表每天凌晨1:00、2:00 执行一次 |
| - | 连续的时间范围0 0 * * 1-3 代表星期一、三的0:00都执行一次 |
| */n | 每隔多久执行一次*/10 * * * * 代表每10分钟执行一次 |
-
at指令是一次性定时计划任务,at的守护进程为atd,在后台运行
-
at指令是只会执行一次!且在使用at指令时,需要保证atd进程存在
-
Ctrl + D 结束at命令输入
at [选项] [时间]
- 选项:
选项 含义 -m 完成指定任务后,向用户发送邮件,即使没有任何输出 -I (大写i) atq的别名 -d atrm的别名 -v 显示任务被执行的目标时间 -c 打印任务内容到标准输出 -V 显示版本信息 -q <队列> 使用指定的任务队列 -f <文件> 从指定文件读入任务而不是从标准输入读入 -t <时间参数> 以时间参数的形式提交要运行的任务 - 时间:
-
使用hh:mm (小时:分钟) 方式指定时间,但如果当天时间已经过去,则默认第二题执行
-
使用 midnight noon teatime等词语来指定时间
-
使用12小时计时制,即在时间后面加上AM(上午) 或 PM(下午)
-
使用具体日期
-
month day 月 日
-
mm/dd/yy 月日年
-
dd.mm.yy 日月年
-
-
使用相对计时法 即now + count time-units
-
now 当前时间
-
time-units 时间单位 eg:minutes、hours、days
-
count 时间数量
-
-
使用 today、tomorrow 完成指令时间
-
-
查看 当前所有进程
-
一般查看进程都需要筛选,所以后面可以加入 | grep [名称]
-
ps -ef | grep [进程名称]
-
查看所有硬盘的 挂载信息
lsblk
-
lsblk -f 更加详细的硬盘挂载信息
lsblk -f
-
将某一硬盘的分区 挂载 到目录上
mount [硬盘名/分区名] [挂载目录]
mount 命令行挂载完后 需要向/etc/fstab添加挂载信息 否则重启后依然失效!
-
删除 分区挂载目录的关系
umount [硬盘名/分区名 或 挂载目录]
-
查看所有硬盘分区目录的使用情况
df -h
-
查询指定目录的硬盘占用情况,默认为当前目录
du [选项] [指定目录]
| 选项 | 含义 |
|---|---|
| -s | 指定目录占用大小汇总 |
| -h | 带计量单位 |
| -a | 含文件 |
| --max-depth=n | 子目录深度n |
| -c | 列出明细的同时,增加汇总值 |
-
显示系统执行的进程
ps [选项] # 显示所有进程的指令如下 ps -aux1.可以通过 | more 来获得更好的观看体验
2.可以通过 | grep 来过滤获取指定的相关进程
| 选项 | 解释 |
|---|---|
| -a | 显示当前终端的所有进程信息 |
| -u | 以用户的格式显示进程的信息 |
| -x | 显示后台进程的运行参数 |
| 符号 | 含义 |
|---|---|
| USER | 用户名称 |
| PID | 进程唯一标识号可以类比为:身份证号 |
| %CPU | 进程占用CPU百分比 |
| %MEN | 进程占用物理内存的百分比 |
| VSZ | 进程占用的虚拟内存大小单位 KB |
| RSS | 进程占用的物理内存大小单位 KB |
| TT | 终端名称一般显示为 ? |
| STAT | STAT进程状态 S 正在运行, D 短期等待, Z 僵尸进程, T 被跟踪或者停止等待 |
| STARTED | 进程一开始的启动时间 |
| COMMAND | 启动进程所用的命令和参数,如果过于长则会被截断显示 |
僵尸进程 又名 僵死进程:当子进程结束后,资源会从内存中完全释放,但是依然在系统进程表中依然保留些退出状态的信息,需要父进程调用wait()或者waitpid()方法释放,如果父进程没有这么做,那么这些信息会永久滞留,通俗的讲:占着茅坑不拉屎
那为什么要设计系统的时候 要在系统进程表中保留这些信息呢?
答: 因为许多时候,父进程都需要获取子进程退出时的状态信息,以完善父进程的相关工作。
僵尸进程的危害是什么?
答:僵尸进程虽然不占有任何内存空间,但如果父进程不调用 wait() / waitpid() 的话,那么保留的信息就不会释放,其进程号就会一直被占用,而系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。
-
既然僵尸学习了 顺序学一下孤儿进程吧
孤儿进程:当父进程结束后,则子进程就处于孤儿状态,但我们知道 所有进程在退出时都必须由wait()或者waitpid()方法释放,所以必须要有一个进程收留这些孤儿进程,这个工作就交给 init进程,由init进程来结束这些孤儿进程的工作。
其实可以发现 僵尸进程 比 孤儿进程危害大得多
pstree-
以树状格式查看进程信息更直观了解各个进程的父子关系
pstree [选项]
| 选项 | 解释 |
|---|---|
| -p | 显示进程的PID |
| -u | 显示进程所属的用户 |
-
top实现 动态 监控进程,能以周期性刷新进程界面,并且可以过滤显示指定进程
top [选项]
| 选项 | 解释 |
|---|---|
| -d [n 单位:秒] | 指定进程信息每隔n秒刷新一次。默认:3秒 |
| -i | 指定进程信息不显示任何闲置、僵死的进程 |
| -p [进程 PID] | 指定进程信息仅显示某进程ID的状态 |
执行top指令后,会进入进程信息操作台
以下是交互操作说明:
| 操作 | 解释 |
|---|---|
| P | 以CPU使用率排序(降序) 默认就是此选项 |
| M | 以内存的使用率排序(降序) |
| N | 以PID排序(降序) |
| q | 退出top操作台 |
| u | 以用户名监视特定进程。输入u后回车,再输入用户名 |
| k | 以进程ID监视特定进程。输入k后回车,在输入PID |
-
终止某一进程
kill [选项] [进程号]
| 选项 | 解释 |
|---|---|
| -9 | 强行终止某一进程 |
-
终止指定名称的线程
killall [进程名称]
进程名称支持通配符,所以只要是满足通配符的规则的进程通通杀死!
另外,killall 也会终止此进程下的所有子进程!
-
服务也是进程,只是在后台默默运行着
service [服务名] [选项]
值得注意的是:于CentOS7.0之后 很多服务不再使用service指令,而是systemctl
| 选项 | 解释 |
|---|---|
| start | 开启服务 |
| stop | 终止服务 |
| restart | 重启服务(先stop 后start) |
| reload | 重新加载(服务不会终止,会重新加载配置文件) |
| status | 查看状态 |
-
通过setup指令可以图形化的查看到所有的服务并可以设置开关自启动
setup
| 运行级别 | 解释 |
|---|---|
| 0 | 系统停机状态系统默认运行级别不能为0,否则无法正常启动 |
| 1 | 单用户工作状态root状态,用于系统维护,禁止远程登陆 |
| 2 | 多用户状态没有NFS 且 不支持联网 |
| 3 | 完全的多用户状态有NFS 此模式登陆后会进入命令行模式 |
| 4 | 系统未使用,保留 |
| 5 | 图形GUI模式 |
| 6 | 系统正常关闭并重启系统默认运行级别不能为6,否则无法正常启动 |
chkconfig最常用的只有3和5
-
设置各个服务的运行级别设置 是否 自启动
-
查看服务
chkconfig --list
-
修改运行级别是否为自启动
chkconfig --level [级别] [服务名] [on/off]
chkconfig设置完后,需要重启才生效
很多服务不再使用chkconfig指令, 而是 systemctl
-
systemctl 管理服务指令
-
此指令只是临时起效,当重启之后依然会根据默认状态自启动,需要永久更改需要使用 enable、disable 指令
systemctl [选项] [服务名]
-
| 选项 | 解释 |
|---|---|
| start | 开启服务 |
| stop | 终止服务 |
| restart | 重启服务(先stop 后start) |
| reload | 重新加载(服务不会终止,会重新加载配置文件) |
| status | 查看状态 |
-
systemctl 设置服务的自启动状态
-
查看服务开机启动状态
systemctl list-unit-files
可以使用过滤指令grep
-
设置服务开机启动
systemctl enable [服务名]
-
关闭服务开机启动
systemctl disable [服务名]
-
查询某个服务是否为自启动
systemctl is-enabled [服务名]
-
firewall大家耳熟能详的防火墙,常常背负着保护电脑的巨大重任。那么防火墙是如何保护电脑的呢?
这时候就联系到这节所要讨论的 端口 了,在我们电脑当中,端口的存在对进程起着巨大的作用,因为网络运输的数据可以通过端口运输到进程,也就是我们的应用。就比如,你往你的QQ好友发个信息,这条数据在网络的带动下,抵达了对方主机,然后通过对方主机的端口号运输到对方的QQ相关进程中,这样子就实现了端到端的服务。
而防火墙则是负责在端口 拦截危害的信息,一旦发现有数据经过端口,防火墙会自动识别此数据,再打算放不放闸,让此数据通过端口。也就像古代的城关。
来自网络中的数据会指明自己要前往的端口号,如果此端口并没有被某一进程使用,防火墙会截断此数据,不同意他通过。而反之,端口正被某一进程使用时候,防火墙则会放闸,让此数据进入端口。那么当我们关闭了防火墙,也就失去了城关,这样子任何数据就可以自由的进入端口,如果有不法分子利用此机会,则会对主机造成不可估量的伤害!
-
防火墙指令,负责开关指定端口
-
开启端口 需要对应的端口号以及协议
firewall-cmd --permanent --add-port=[端口号]/[协议]
-
关闭端口 需要对应的端口号以及协议
firewall-cmd --permanent --remove-port=[端口号]/[协议]
执行开启或关闭指令后,都必须重新加载才能生效firewall-cmd --reload
-
查询端口是否开放 需要对应的端口号以及协议
firewall-cmd --query-port=[端口号]/[协议]
-
网络指令 netstat协议可以通过下面的netstat查看
-
用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstat -anp
推荐结合grep过滤,或者more分页查看,提升体验感
| 选项 | 解释 |
|---|---|
| -a | 显示所有选项,默认不显示LISTEN相关。 |
| -t | 仅显示tcp相关选项。 |
| -u | 仅显示udp相关选项。 |
| -n | 拒绝显示别名,能显示数字的全部转化成数字。 |
| -l | 仅列出有在 Listen (监听) 的服务状态。 |
| -p | 显示哪些进程正在被调用 |
| -r | 显示路由信息,路由表 |
| -e | 显示扩展信息,例如uid等 |
| -s | 按各个协议进行统计 |
| -c | 每隔一个固定时间,执行该netstat命令。 |
显示内容的列名解释
| 名称 | 解释 |
|---|---|
| Proto | 显示连接使用的协议。 |
| RefCnt | 表示连接到本套接口上的进程号。 |
| Types | 显示套接口的类型。 |
| State | 显示套接口当前的状态。 |
| Path | 表示连接到套接口的其它进程使用的路径名。 |
-
是一种网络监测工具,主要检测是否能和目标主机网络是否能接通.
ping [ip地址/域名]
域名就是我们经常访问的www.csdn.net 或 www.baidu.com,学过计网的朋友都知道,域名其实就是ip,只是需要通过DNS映射成ip罢了。
如果ping指令执行完后,有数据互通代表可以连接到此ip
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有RPM扩展名的文件,RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
-
查询所安装的所有 rmp 软件包
rmp -qa
q 表示 query,a 表示 all,连起来就表示查看所有
建议搭配 more分页 或 grep过滤 使用
-
查询指定软件包是否安装
rpm -q [软件包名]
-
查询此软件包的信息
rpm -qi [软件包名]
-
查询软件包中的文件
rpm -ql [软件包名]
-
查询此文件所属的软件包
rmp -qf [文件全路径]
-
安装rmp软件包
rpm -ivh [rmp包的全路径名称]
i =install 安装, v =verbose 安装提示, h =hash 安装进度条
-
卸载rmp软件包
rmp -e [rmp软件包的名称]
若其他软件包依赖于要卸载的 rmp包,则卸载失败
若一定需要卸载,则可以使用强制卸载
-
强制卸载rmp软件包
rmp -e --nodeps [rmp软件包的名称]
添加--nodeps 即可实现强制卸载,但 不推荐 这样做!如果强制卸载的软件包有被依赖 的关系,则会导致其他软件包的程序无法正常运行!
yum(全称为 Yellow dogUpdyater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
-
以软件包名称,指定 查询yum服务器上的安装软件包
yum list | grep [软件包名称]
当然,你想查看yum服务器上所有软件包,可执行yum list,但一般不会有人这么做吧吧吧吧吧~
-
下载并安装 指定的yum包
yum install [软件包名称]
全程都需要网络!



