md、pdf 格式笔记

链接: https://pan.baidu.com/s/1ix9YSR4oXtR4EXMfXPFmQw?pwd=nrxx


目录创建指令

mkdir

  • 创建目录

mkdir [目录名]


mkdir -p

  • 创建多级目录,若前缀目录存在 则直接覆盖
  • 不同级目录可 重名

mkdir -p [目录名1/目录名2/...]


删除指令

rmdir

  • 只能删除 空目录,如果删除的目录下不为空(有文件or目录)则都会删除失败 rmdir [目录名]

rm

  • 只能删除 文件 rm [文件名]

rm -rf

  • 强制 删除指定目录(包括此目录下的所有文件、目录) 和 文件
  • -r : 递归删除整个文件夹
  • -f : 强制删除不提示 rm -rf [目录]

系统指令

reboot

  • 系统重启

halt

  • 系统关机,需要当前用户为Root

创建空文件指令

touch

  • 创建空文件
  • touch [文件名称.后缀]

显示指令

ls

  • 显示当前目录文件指令
  • 搭配如下指令可实现各种输出样式

/*       -C     多列输出,纵向排序。       -F     每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀, 每个可运行名加“             * ”后缀。       -R     递归列出遇到的子目录。       -a     列出所有文件,包括以 "." 开头的隐含文件。       -c     使用“状态改变时间”代替“文件修改时间”为依据来排序   (使用“   -t             ”选项时)或列出(使用“ -l ”选项时)。       -d     将目录名象其它文件一样列出,而不是列出它们的内容。       -i     输出文件前先输出文件系列号(即 i 节点号: i-node number)。               -l 列出(以单列格式)文件模式(file、mode), 文件的链接数,所有者名,组名,文件大小(以字节为单位),时间信息,及文件名。缺省时,时间信息显示最近修改时间;可以以 选项 "-c"和"-u"选择显示其它两种时间信息。对于设备文件,原显示文件大小的区域通常显示的是主要和次要的号(majo‐rand minor device numbers)       -q     将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)       -r     逆序排列。             -h 显示文件大小时候以M为单位(默认为 字节)       */


复制指令

cp

  • 复制此文件 并 指定命名文件名 cp [目标文件名] [复制粘贴后文件名]
  • 若指定命名文件名时 附带上目录,则复制粘贴到指定目录下( 注意!注定目录必须存在!) cp [目标文件名] [目录1/.../复制粘贴后文件名 ]  #目录1...都必须存在

文件移动指令

mv

  • 移动文件或目录 到指定目录下 mv [文件 or 目录] [目录1/目录2...]
  • 如果移动文件时候指定了文件名,则移动并重命名 mv [文件] [目录1/../指定文件名]

查看文件指令

cat

  • 只查看文件信息,不能够修改 cat [目录1/.../文件]

cat -n

  • 查看文件信息的同时显示行号 cat -n [..文件]

less

  • less指令用来分屏查看文件内容,只根据需要显示的内容进行加载,对于显示大型文件具有小高的效率
  • less指令输入后 会进入less程序控制台 less [..文件]
  • less程序控制台中的指令

操作

功能说明

空白键

向下翻动一页

[pagedown]

向下翻动一页

[pageup]

向上翻动一页

/ 字串

向下搜寻 [字串] 的功能 n:向下查找; N:向上查找

? 字串

向上搜寻 [字串] 的功能 n:向下查找; N:向上查找

q

离开 less程序 控制台

echo

  • echo 输出内容到控制台 # 1 显示系统变量值 echo [$系统变量名] # 2 显示字符串到控制台上 echo ["字符串"]

head

  • head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容 # 1.显示文件的前10行内容 head [文件名] #2. 自定义显示几行文件头部内容 head -n [数字] [文件名]

tail

  • tail 用于显示文件的 尾部 部分内容,默认情况下 tail 指令显示文件的尾部10行内容 # 1.显示文件的前10行内容 tail [文件名] #2. 自定义显示几行文件头部内容 tail -n [数字] [文件名]
  • tail -f 实时追踪该 文件任意更新 tail -f [文件名]

内容追加、覆盖指令

> 、>>

  • > 覆盖 >> 追加
  • 若覆盖、追加的文件不存在,则自行创建。 [指令(所显示的内容)] > [文件] # 覆盖 [指令(所显示的内容)] >> [文件] # 追加 #例如: cat [文件] > [文件]

查看历史操作指令

history

  • 查看所有已经执行过历史的命令(带行号)
  • 可以指定执行某一行的命令 使用 ![行号] # 查看 指定行数 最近执行过的命令 histry [行数] # 查看 所有 最近执行过的命令 history # 执行对应行号的指令 ![指定行号]

软链接设置指令

ln -s

  • 将某个目录或文件进行 软链接(相当于window的快捷方式) # 设置软链接 ln -s [原文件 or 目录] [指定软链接名]
  • 删除方式 依然使用 rm 与删除文件一样

当使用pwd查看当前目录时候,会看见以 软链接名称 显示的目录

时间指令

cal

  • 显示日历,输入任意两位正整数 可显示当前世纪年份的日历
  • 若想显示具体某年日历 直接指示出具体年份 eg:cal 2025 # 显示当前世纪年份的日历 cal [两位数] eg : cal 25 # 显示2025年的日历 # 显示具体年份的日历 cal [具体年份]

date

  • 显示当前日期

基本语法

显示内容

date

显示当前时间

date +%Y

显示当前年份

date +%m

显示当前月份

date +%d

显示当前几号

[自定义] date "+%Y-%m-%d %H:%M:%S"

显示年月日时分秒

  • 自定义样式只需有保证 +%Y、%m、%d...不改变 ,即可自定义各种样式,严格区分大小
  • %h 是当前年份后两位

date -s

  • 设置当前系统时间 date -s ["字符串时间"]

查询指令

find

  • find [目录] -name [文件名] 按照 名称 寻找 文件
  • find [目录] -user [用户名] 按照 用户名 寻找属于此用户的所有文件
  • find [目录] -size [文件大小] 按照 文件大小寻找此大小的文件
  • 文件大小的单位可填写的有K、M、G
  • +[文件大小]大于
  • -[文件大小]小于
  • =[文件大小]等于

locate

  • locate基于update程序将硬盘中所有文件建立一个索引数据库进行查询,所以在第一次运行时,必须使用updatedb指令创建locate数据库
  • locate在数据库寻找;find从系统磁盘上找 # 第一次执行 updatedb locate [指定文件名]

which

  • 查询某个指令在哪一个文件下 which [指令]

过滤指令

grep

  • 对指定文件下的数据进行 过滤查询 也就是
  • 第一种写法 [任意内容显示指令] | grep ["字符串"] #只查询匹配字符串的所在行 # 例 ls | grep abc #查询匹配abc的所在行
  • 第二种写法grep ["字符串"] [文件]
  • 在grep后面指定
  • -n 显示匹配行号
  • -i 忽略查询字符串中的字母大小写

#代表既显示行号 又忽略字母大小 grep -ni ["字符串"] [文件] cat [文件] | grep -in ["字符串"] #只查询匹配字符串的所在行

解压缩指令

gzip

  • 用于压缩文件,只能压缩为.gz压缩包 gzip [目录/../指定压缩文件名.zip] [目标文件]
  • 值得注意的是:不指定则按照原有文件名命名

gunzip

  • 用于解压文件,只能解压为.gz压缩包 gunzip [目标.gz压缩包]

-r、-d

zip

  • 用于压缩文件,只能压缩为.zip压缩包 zip [../指定压缩文件名.zip] [目标文件名]
  • 搭配 -r 代表对某个目录进行递归压缩也就是把目录下所有文件进行压缩 即压缩目录 zip -r [目标目录]

unzip

  • 用于解压文件,只能解压为.zip压缩包 unzip [../目标.zip压缩包]
  • 搭配 -d 可以指示压缩到指定目录下进行存放 unzip -d [指定存放目录] [../目标.zip压缩包]

打包解压缩指令

挺全能的

tar

  • 打包,最后打包的文件为 tar.gz 文件 tar [选项] [指定.tar.gz文件名]

选项

功能

-c

产生.tar打包文件

-v

显示详细文件信息

-f

指定压缩后文件名

-z

打包同时压缩

-x

解.tar.gz 压缩包

组指令

groupadd

  • 组的添加,需要root的权限 groupadd [组名]

ls -l

  • 查看当前文件所在组 ls -l

chgrp

  • 修改 文件或目录 的所在组 chgrp [组名] [文件名/目录名]

usermod -g

  • 改变用户所在组 usermod -g [组名] [用户名]

登陆目录指令

usermod -d

  • 改变当前用户登录的 初始目录
  • 值得注意的是:用户需要有进入到新目录的权限 usermod -d [目录名] [用户名]

ls -l 前缀内容解析

rwx作用到文件

r

代表 可读取查看

w

代表 可写、修改 但不代表可以删除,删除一个文件前提是对该文件所在目录有写权限,才能删除此文件

x

代表 可执行

rwx作用到目录

r

代表 可以读取,ls指令可以查看目录内容 即ls指令

w

代表 可写,可以修改,对目录创建+删除+重命名目录

x

代表可执行,可以进入此目录 即cd指令

前缀位

表示含义

0位

文件类型:- 普通文件, l 链接, d 目录, c 字符设备文件, b 块设备

1-3位

表明文件所有者拥有该文件的权限 - User

4-6位

所属组拥有该文件的权限- Group

7-9位

其他用户拥有该文件的权限 - Other

权限指令

chmod

方式一:

  • 通过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

  • 修改 文件 所有者 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会按周期性执行,而不是只执行一次!
  • crond -e 编辑crontab定时任务(输入完后会进入指令区)
  • crond -l
  • crond -r

第几个 *

含义

范围

第一个

分钟

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指令是一次性定时计划任务,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 完成指令时间

进程指令

ps -ef

  • 查看 当前所有进程
  • 一般查看进程都需要筛选,所以后面可以加入 | grep [名称]
  • ps -ef | grep [进程名称]

硬盘指令

lsblk

  • 查看所有硬盘的 挂载信息 lsblk
  • lsblk -f 更加详细的硬盘挂载信息 lsblk -f

mount

  • 将某一硬盘的分区 挂载 到目录上 mount [硬盘名/分区名] [挂载目录]

mount 命令行挂载完后 需要向/etc/fstab添加挂载信息 否则重启后依然失效!

umount

  • 删除 分区挂载目录的关系 umount [硬盘名/分区名 或 挂载目录]

df -h

  • 查看所有硬盘分区目录的使用情况 df -h

du

  • 查询指定目录的硬盘占用情况,默认为当前目录 du [选项] [指定目录]

选项

含义

-s

指定目录占用大小汇总

-h

带计量单位

-a

含文件

--max-depth=n

子目录深度n

-c

列出明细的同时,增加汇总值

进程指令

ps

  • 显示系统执行的进程 ps [选项] # 显示所有进程的指令如下 ps -aux

1.可以通过 | 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实现 动态 监控进程,能以周期性刷新进程界面,并且可以过滤显示指定进程 top [选项]

选项

解释

-d [n 单位:秒]

指定进程信息每隔n秒刷新一次。默认:3秒

-i

指定进程信息不显示任何闲置、僵死的进程

-p [进程 PID]

指定进程信息仅显示某进程ID的状态

执行top指令后,会进入进程信息操作台

以下是交互操作说明:

操作

解释

P

CPU使用率排序(降序) 默认就是此选项

M

内存的使用率排序(降序)

N

以PID排序(降序)

q

退出top操作台

u

以用户名监视特定进程。输入u后回车,再输入用户名

k

以进程ID监视特定进程。输入k后回车,在输入PID

kill

  • 终止某一进程 kill [选项] [进程号]

选项

解释

-9

强行终止某一进程

killall

  • 终止指定名称的线程 killall [进程名称]

进程名称支持通配符,所以只要是满足通配符的规则的进程通通杀死!

另外,killall 也会终止此进程下的所有子进程!

服务指令

service

  • 服务也是进程,只是在后台默默运行着 service [服务名] [选项]

值得注意的是:于CentOS7.0之后 很多服务不再使用service指令,而是systemctl

选项

解释

start

开启服务

stop

终止服务

restart

重启服务(先stop 后start)

reload

重新加载(服务不会终止,会重新加载配置文件)

status

查看状态

setup

  • 通过setup指令可以图形化的查看到所有的服务并可以设置开关自启动 setup

服务运行级别

运行级别

解释

0

系统停机状态系统默认运行级别不能为0,否则无法正常启动

1

单用户工作状态root状态,用于系统维护,禁止远程登陆

2

多用户状态没有NFS 且 不支持联网

3

完全的多用户状态有NFS 此模式登陆后会进入命令行模式

4

系统未使用,保留

5

图形GUI模式

6

系统正常关闭并重启系统默认运行级别不能为6,否则无法正常启动

最常用的只有3和5

chkconfig

  • 设置各个服务的运行级别设置 是否 自启动
  • 查看服务 chkconfig --list
  • 修改运行级别是否为自启动 chkconfig --level [级别] [服务名] [on/off]

chkconfig设置完后,需要重启才生效

很多服务不再使用chkconfig指令, 而是 systemctl

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 [服务名]

端口指令

大家耳熟能详的防火墙,常常背负着保护电脑的巨大重任。那么防火墙是如何保护电脑的呢?

这时候就联系到这节所要讨论的 端口 了,在我们电脑当中,端口的存在对进程起着巨大的作用,因为网络运输的数据可以通过端口运输到进程,也就是我们的应用。就比如,你往你的QQ好友发个信息,这条数据在网络的带动下,抵达了对方主机,然后通过对方主机的端口号运输到对方的QQ相关进程中,这样子就实现了端到端的服务。

而防火墙则是负责在端口 拦截危害的信息,一旦发现有数据经过端口,防火墙会自动识别此数据,再打算放不放闸,让此数据通过端口。也就像古代的城关。

来自网络中的数据会指明自己要前往的端口号,如果此端口并没有被某一进程使用,防火墙会截断此数据,不同意他通过。而反之,端口正被某一进程使用时候,防火墙则会放闸,让此数据进入端口。那么当我们关闭了防火墙,也就失去了城关,这样子任何数据就可以自由的进入端口,如果有不法分子利用此机会,则会对主机造成不可估量的伤害!

firewall

  • 防火墙指令,负责开关指定端口
  • 开启端口 需要对应的端口号以及协议 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

  • 是一种网络监测工具,主要检测是否能和目标主机网络是否能接通. ping [ip地址/域名]

域名就是我们经常访问的www.csdn.net 或 www.baidu.com,学过计网的朋友都知道,域名其实就是ip,只是需要通过DNS映射成ip罢了。

如果ping指令执行完后,有数据互通代表可以连接到此ip

软件包指令

rmp 查询

一种用于互联网下载包的打包及安装工具,它包含在某些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 安装

  • 安装rmp软件包 rpm -ivh [rmp包的全路径名称]

i =install 安装, v =verbose 安装提示, h =hash 安装进度条

rmp 卸载

  • 卸载rmp软件包 rmp -e [rmp软件包的名称]

若其他软件包依赖于要卸载的 rmp包,则卸载失败

若一定需要卸载,则可以使用强制卸载

  • 强制卸载rmp软件包 rmp -e --nodeps [rmp软件包的名称]

添加--nodeps 即可实现强制卸载,但 不推荐 这样做!如果强制卸载的软件包有被依赖 的关系,则会导致其他软件包的程序无法正常运行!

yum

yum(全称为 Yellow dogUpdyater, Modified)是一个在FedoraRedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

  • 以软件包名称,指定 查询yum服务器上的安装软件包 yum list | grep [软件包名称]

当然,你想查看yum服务器上所有软件包,可执行yum list,但一般不会有人这么做吧吧吧吧吧~

  • 下载并安装 指定的yum包 yum install [软件包名称]

全程都需要网络!