Linux系统必会基础命令与权限、用户、磁进程管理

Linux命令总结

声明

  • 本文中,[参数]表示文件、目录或路径; [name]表示文件名;

    ​ [number]表示任意整数;[letter]表示任意字母;[word]表示任意内容;


文章目录

xshell快捷键

Ctrl + C:中断当前运行的命令。
Ctrl + Z:将当前任务放到后台,并暂停。
Ctrl + A:移动光标到行首。
Ctrl + E:移动光标到行尾。
Ctrl + U:剪切;删除光标前的所有内容。
Ctrl + K:剪切;删除光标后的所有内容。
Ctrl + Y:粘贴;Ctrl + U或Ctrl + K删除的内容。
Ctrl + L:清屏,等同于输入clear命令。
Tab:命令或文件名自动补全。

缓冲区(buffer)和缓存区(cache)

将数据写入到内存中,这个存放数据的内存空间在linux系统中一般被称为缓冲区(buffer),例如:写入到内存缓冲区,即写缓冲。

从内存里读取数据,这个存放数据的内存空间在linux系统中一般被称为缓存区(cache),例如:从内存读取,即读缓存

man 查看帮助手册

语法形式

man	[linux命令]

示例

[root@Dezyan ~]# man mkdir

常见的Linux操作系统类型

Kylinv10sp3 国有政府机构使用 政治原因
Ubuntu22.04.4 开发人员进行使用
centos7.6/centos7.9 国有互联网企业 已停止维护
Debian 金融行业应用
kali 网安人员关注的

–help 查看帮助信息

语法形式

[Linux命令] --help

示例

[root@Dezyan ~]# mkdir --help

shutdown 关机重启命令

语法形式

shutdown
shutdown [选项]

选项

-c 				# 取消关机
-h now/[number] # now:立刻关机;[number]:n分钟后关机
				# <=>halt;init 0;
-r [number] 	# [number]:n分钟后重启系统;不加[number]:默认一分钟后重启
				# <=>reboot;init 6;

pwd 查看当前所在的路径

语法形式

pwd

示例

[root@Dezyan ~]# pwd
/root

cd 切换用户当前工作目录

语法形式

cd [选项] [参数]

选项(可为空)

~	# 切换到家目录 <=> 直接输入cd
-	# 返回上一次所在的目录
.	# 进入当前目录
..	# 进入上一级目录
	# ../../	进入上两级目录
/	# 进入到根目录

示例

#进入到/opt目录下
[root@Dezyan ~]# cd /opt
[root@Dezyan opt]#

ls 显示目录内容列表

语法形式

ls [选项] [参数]

选项(可为空)

-l	#显示文件的详细信息	<=>	ll
-a	#显示目录下所有文件信息(包括隐藏文件)
-i	#显示文件inode号
-s	#显示文件大小信息
-h	#显示文件大小信息(以人类可读方式查看)
-t  # 按时间信息排序。
#常用 -lhi 来展示文件全部信息;

示例

[root@Dezyan ~]# ls -l /opt/
总用量 0
dr-xr-xr-x 5 root root 79  324  2023 kylin-sm-package
drwxr-xr-x 4 root root 58 1025 00:43 patch_workspace
[root@Dezyan ln]# ls -lih /etc/sysconfig/network-scripts/ifcfg-ens33 
1324991 -rw-r--r-- 1 root root 357 1024 16:45 /etc/sysconfig/network-scripts/ifcfg-ens33

ls -lhi输出内容详解

[root@Dezyan ~]# ls -lhi /etc/hosts
67162862 -rw-r--r-- 1 root root 158  623  2020 /etc/hosts
第1列		文件inode号信息: 从磁盘调取查看数据的索引(指示板)
第2列		文件数据类型:    文本文件 目录文件 设备文件 链接文件...
第3列		文件权限信息:    文件如何进行管理操作,登录系统用户可以不可以管理操作指定文件
第4列		数据文件硬连接数:查看文件数据多个方式
第5列		文件数据属主信息:文件创建者 文件管理者
第6列		文件数据属组信息:除了文件创建者和管理者,还有哪些其他的系统用户可以管理文件“}
第7列		文件数据大小信息:占用磁盘空间情况(默认大小单位 字节)
第8列		文件数据修改时间:文件信息被修改编辑的时间记录信息

stat 用于显示文件的状态信息(时间)

stat输出的文件信息相较于ls更全面

语法格式

stat [参数]

输出内容详解(ubt系统)

root@Dezyan01:~# stat /etc/hosts
  File: /etc/hosts
  Size: 204       	Blocks: 8          IO Block: 4096   regular file
Device: fc03h/64515d	Inode: 654183      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    4/     adm)
Access: 2024-11-04 20:17:58.347748698 +0800
Modify: 2024-09-26 16:56:53.159484223 +0800
Change: 2024-09-26 16:56:53.159484223 +0800
 Birth: 2024-09-26 16:56:53.159484223 +0800

对应中文可将字符集改为中文查看,或在国产Linux系统kylin中查看:

[root@Dezyan ~]# stat /etc/hosts
  文件:“/etc/hosts”
  大小:158       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:67162862    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2024-11-04 08:14:07.897695822 +0800
最近更改:2020-06-23 14:11:43.000000000 +0800
最近改动:2024-10-25 00:42:08.647004736 +0800
创建时间:-
  • Access 访问时间 atime 看一次文件,时间就会改变。
  • Modify 修改时间 显示文件上一次修改时间
  • Change 属性改变时间 ctime 上一次修改文件属性的时间
  • Birth 创建时间 btime 文件的创建时间

inode和block

inode(索引节点)

每个文件、目录和软链接在文件系统中都有一个与之对应的inode。

注意:inode号是inode的唯一标识符,它是一个数字,用于在文件系统中快速定位inode。

  • 存储文件的属性信息inode存储文件的元信息,包括文件的字节数、文件拥有者的User ID(UID)、文件的Group ID(GID)、文件的读、写、执行权限、文件的时间戳(atime、ctime、mtime)等。
  • 作为文件的索引:inode不仅存储文件的属性信息,还指向文件的实际数据块(指向数据块的指针)。通过inode,系统可以快速定位和访问文件内容。
  • 硬连接:具有相同inode的文件互为硬连接文件,这意味着它们共享同一个inode,但可以有不同的文件名。

block(数据块)

文件存取的最小单位,用来存储文件的具体内容。

注意:一个文件至少占用一个block,如果文件大小超过一个block的容量,则会占用多个block。

​ 如果未满一个block,仍会占用一个block,不会将剩余的空间分给其他文件存储使用。

inode和block的关系

  • 在Linux文件系统中,每个文件必须占用一个inode和一个或多个block。

  • inode用于存储文件的元信息和作为文件的索引,而block用于存储文件的具体内容。

  • 通过inode中指向数据块的指针,系统可以快速定位和访问文件的数据(block)。

file 查看文件类型

语法格式

file [选项] [参数]

选项

-b		#列出辨识结果时,不显示文件名称;

示例

#查看/etc/hosts的文件类型,且输出时不显示文件名称
[root@Dezyan ~]# file -b /etc/hosts
ASCII text

常见的文件类型

-		#普通文件;
d		#目录;
l		#软连接;
c		#字符设备;/dev/null,不断吸收(黑洞);/dev/urandom ,/dev/zero不断输出(白洞);
b		#块设备;
s		#socket文件、套接字文件;

详解

1.常用字节文件:
	urandom		不停的往外吐 没啥用
	/dev/null	可以将命令的结果定向到此文件;
				写脚本执行命令的时候,会根据自己想要输出的内容来定义输出格式。
		使用 ping -c1 -W2 www.baidu.com &>/dev/null 后
		可通过$? 判断上一条命令是否成功 0是成功 非0失败
	/dev/zero	用来生成固定大小的文件 或者磁盘读写测试
		dd if=/dev/zero of=/tmp/1.txt bs=1M count=1000

which 查找并显示给定命令的绝对路径

语法形式

which [参数]

示例

#查找pwd、vim命令的绝对路径
[root@Dezyan ~]# which pwd
/usr/bin/pwd
[root@Dezyan ~]# which vim
/usr/bin/vim

du 显示每个文件和目录的磁盘使用空间

语法形式

du [选项] [参数]

选项

-s       #仅显示总计,只列出最后加总的值。
-h       #以K,M,G为单位,提高信息的可读性。
#上述两个参数通常一起使用,表示查看目录或者文件的大小

示例

#将/var/log中的所有文件和目录按大小排序
[root@Dezyan ~]# du -sh /var/log/* | sort -rhk1

touch 创建新的空文件

语法形式

touch [参数] [参数] ....

参数选项

{
   
    
    [number]/[letter]..[number]/[letter]}	#批量创建文件

示例

#创建单个文件
[root@Dezyan ~]# touch 1.txt
#同一目录下创建多个文件
[root@Dezyan ~]# touch 1.txt 2.txt 3.txt
#不同目录下创建多个文件
[root@Dezyan ~]# touch 1.txt /opt/2.txt
#批量创建Dezyan01.txt....Dezyan10.txt文件
[root@Dezyan Dezyan01]# touch Dezyan{01..10}.txt
[root@Dezyan Dezyan01]# ls
Dezyan01.txt  Dezyan03.txt  Dezyan05.txt  Dezyan07.txt  Dezyan09.txt
Dezyan02.txt  Dezyan04.txt  Dezyan06.txt  Dezyan08.txt  Dezyan10.txt

注意

#如果创建的文件存在,只会修改文件时间,不会修改内容;
#使用绝对路径创建时,必须保证目录存在;

cat 查看文件的内容

语法形式

cat [选项] [参数]

选项

-n	#显示文件行数
-E	#每行行尾显示'$'符
-A	#同-E

示例

[root@Dezyan ~]# cat -n /etc/hosts
     1	127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

mkdir 创建目录

语法形式

mkdir [选项] [参数]

选项

-p	#递归创建目录

参数选项

{
   
    
    [number]/[letter]..[number]/[letter]}	#批量创建目录

示例

#同一目录下创建多个目录
[root@Dezyan dzt]# mkdir a b c
[root@Dezyan dzt]# ls
a  b  c
#在不同目录下创建多个目录
[root@Dezyan dzt]# mkdir f /opt/e
#递归创建多级目录
[root@Dezyan dzt]# mkdir -p /aa/bb/cc/dd
#批量创建Dezyan01....Dezyan10目录
[root@Dezyan bb]# mkdir Dezyan{01..10}
[root@Dezyan bb]# ls
cc        Dezyan02  Dezyan04  Dezyan06  Dezyan08  Dezyan10
Dezyan01  Dezyan03  Dezyan05  Dezyan07  Dezyan09

tree 树状图列出目录的内容

语法形式

tree [选项] [参数]

选项

-L [number]	#显示一级目录下所有文件

示例

#显示目录下所有文件
[root@Dezyan ~]# tree dzy
dzy
├── a
│   └── b
│       └── c
│           └── d
│               └── e
#显示目录下一级目录的所有文件
[root@Dezyan ~]# tree -L 1 dzt
dzt
├── a

cp 文件的复制操作

语法形式

cp [选项] [源文件地址参数] [目标地址参数]

选项

-r	#递归处理,将指定目录下的所有文件与子目录一并处理;
-i	#覆盖既有文件之前先询问用户;
-p	#保留源文件或目录的属性;
-d	#当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-a	#此参数的效果和同时指定"-dpR"参数相同;

示例

#将某一文件复制到某一目录之中
[root@Dezyan ding]# cp 1.txt /zhi/
[root@Dezyan ding]# ll /zhi
-rw-r--r-- 1 root root 11 1025 23:09 1.txt
#将某一目录及目录中的所有文件复制到另一个目录之中
[root@Dezyan ding]# ll aa/bb/cc/dd/2.txt
-rw-r--r-- 1 root root 0 1025 23:11 aa/bb/cc/dd/2.txt
[root@Dezyan ding]# cp -r /ding /zhi
[root@Dezyan ding]# tree /zhi
/zhi
├── 1.txt
└── ding
    ├── 1.txt
    └── aa
        └── bb
            └── cc
                └── dd
                    └── 2.txt                    

mv 移动文件或对文件重命名

语法形式

mv [选项] [源文件地址参数] [目标地址参数]

选项

-i	#移动既有文件之前先询问用户;
-t	#可更改语法顺序为	mv [选项] [目标地址] [源文件地址] 

示例

#对当前目录的文件进行重命名(移动同理)
[root@Dezyan ding]# ll
-rw-r--r-- 1 root root 11 1025 23:09 1.txt
drwxr-xr-x 3 root root 16 1025 23:20 aa
[root@Dezyan ding]# mv ./1.txt ./aa.txt
[root@Dezyan ding]# ls
aa  aa.txt

rm 删除给定的文件和目录

语法形式

rm [选项] [参数] [参数] [参数] ...

选项

-i	#删除文件之前先询问用户;
-r	#递归处理,将指定目录下的所有文件与子目录一并处理;
-f	#强制删除文件或目录;

示例

#强制删除一个(多个)文件
[root@Dezyan ding]# touch 1 2 3 4 
[root@Dezyan ding]# ls
1  2  3  4  aa  aa.txt
[root@Dezyan ding]# rm -f 1 2 3 4
[root@Dezyan ding]# ls
aa  aa.txt
#强制删除一个目录及目录下的所有文件
[root@Dezyan ding]# tree aa
aa
└── bb
    └── cc
        └── dd
            └── 2.txt
3 directories, 1 file
[root@Dezyan ding]# rm -rf aa
[root@Dezyan ding]# tree aa
aa [error opening dir]
0 directories, 0 files

vi编辑器

三种模式及相关命令

  • 命令行模式(在其他两种模式下,按Esc即可进入) (使用vi编辑器是此模式为进入时的默认模式)

    相关命令

<#>#移动:
G		#移动光标到文件<最后一行>;
gg		#移动光标到文件内容的的<第一行>;
Ngg		#移动光标到文件内容的<第N行>;
^		#移动光标到当前行<行首>;
$		#移动光标到当前行<行尾>;
##删除:
x或X		#删除一个字符,x删除光标<后>的,而X删除光标<前>的;
D		#删除从当前光标到光标所在行尾的<全部字符>;
dd		#删除光标行<整行>的内容;
ndd		#删除当前行及其后<n-1行>;
##复制粘贴:
nyy		#将当前行及其下n行的内容复制;
p		#粘贴文本操作,将复制的内容粘贴到当前光标所在位置的<下方>;
P(大写)  #粘贴文本操作,将复制的内容粘贴到当前光标所在位置的<上方>;
##查找:
/[字符串]	#从<当前光标所在位置>开始向文件<尾部>查找指定字符串的内容;[字符串]	#从<当前光标所在位置>开始向文件<头部>查找指定字符串的内容;
				# n	向下继续查找;
				# N 向上继续查找;
##撤销:
u		#撤销上一次的操作;
  • 插入模式(在命令行模式下,按i即可进入)

    相关命令

A	#进入插入模式,并在<行末>添加文本;
a	#进入插入模式,并在当前字符<后>添加文本;
i	#进入插入模式,并在当前字符<前>插入文本;
I	#进入插入模式,并在<行首>插入文本;
o	#进入插入模式,并在当前行<后面>插入一空行;
O	#进入插入模式,并在当前行<前面>插入一空行;
  • 底行模式(在命令行模式下,按:即可进入)

    相关命令

set nu		#编辑时显示行号;
set nonu	#编辑时不显示行号;
w			#在执行存盘操作;w!表示强制保存;
q			#执行退出vi操作;q!表示强制退出;
wq			#执行存盘退出操作;
$			#光标跳转到最后一行的行首;

示例1:批量添加注释

1.	使用vim打开文件;
2.	ctrl+v选择需要添加注释的行;
3.	输入大写I,并输入#;
4.	Esc退出,完成批量注释;

示例2:替换动作

:s/root/oldboy/g  # 只替换光标所在行的所有root
:%s/root/oldboy/g # 将文件中所有的root替换成oldboy

echo 输出指定的字符串或者变量

语法形式

echo [word] [重定向符号] [参数]

重定向符号

>		#覆盖输入;
>>		#追加输入;

示例

#将手机号覆盖输入到phone.txt文件中
[root@Dezyan Dezyan01]# echo 110 > phone.txt
[root@Dezyan Dezyan01]# cat phone.txt 
110
#将手机号追加输入到phone.txt文件中
[root@Dezyan Dezyan01]# echo 120 >> phone.txt
[root@Dezyan Dezyan01]# echo 119 >> phone.txt
[root@Dezyan Dezyan01]# cat phone.txt 
110
120
119

tail 在屏幕上显示指定文件的末尾若干行

语法形式

tail [选项] [参数]

选项

-[number]/-n[number]	#输出文件的尾部number行内容;
-f						#显示文件最新追加的内容;

示例

#查看/var/log/secure日志文件中的后10行
[root@Dezyan ~]# tail -n10 /var/log/secure

head 显示文件的开头部分

语法形式

head [选项] [参数]

选项

				#默认显示前10行内容;
-[number]		#输出头部number行的内容;

示例

#查看/var/log/secure日志文件中前5行的内容
[root@Dezyan ~]# head -5 /var/log/secure 
Oct 24 16:46:29 Dezyan polkitd[758]: Loading rules from directory /etc/polkit-1/rules.d
Oct 24 16:46:29 Dezyan polkitd[758]: Loading rules from directory /usr/share/polkit-1/rules.d
Oct 24 16:46:29 Dezyan polkitd[758]: Finished loading, compiling and executing 5 rules
Oct 24 16:46:29 Dezyan polkitd[758]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Oct 24 16:46:30 Dezyan sshd[948]: Server listening on 0.0.0.0 port 22.

less 上下翻页浏览文件内容

语法形式

less [参数]

快捷键

ctrl + f		#下一页;
ctrl + b		#上一页;
g				#第一行;
G				#最后一行;
[number]		#第N行;
/				#搜索;
q				#退出;

more 显示文件内容,每次显示一屏

语法形式

more [参数]

wc 统计文件的字节数、字数、行数

语法形式

wc [选项]  [参数]

选项

			# 查看文件的字节数、字数、行数;
-l			# 统计行数;

示例

#查看文件的字节数、字数、行数
[root@Dezyan ~]#wc test.txt
## 输出结果
  7     8     70     test.txt
##行数 单词数 字节数    文件名

#统计文件行数
[root@Dezyan ~]#wc -l /etc/services 
11473 /etc/services

sort 对文本文件中所有行进行排序

语法形式

sort [选项]  [参数]
sort [选项] [选项]  [参数]

选项

				#<=> cat 文件 | sort  默认第一列内容进行排序(从小到大)
-r				#倒序排序(从大到小);
-n				#根据数字排序;
-rn				#根据数字逆序排序;
-k[num]			#按照第n列进行排序;
-k[n1],[n2]		#按照第n1列,第n2列(若第n1列相同则比较第n2列)进行排序
-kn.m			#按照第n列的第m个字符排列
-h      		#根据存储容量排序(注意使用大写字母,例如:2K 1G)。
-t[符号] 		   #指定分隔符

注意

#在选项中:
#		-rnk[num]	三个选项可以连在一起使用
#		-rhk[num]	三个选项可以连在一起使用
##		-n 和 -h		两个选项互相冲突,不能一起使用
##		-t[符号]		与所有选项都冲突,需要单独使用

示例

#将文件按照第二列的大小逆序排序
[root@Dezyan ~]# sort -rnk2  num.txt
#将/var/log中的所有文件和目录按大小排序
[root@Dezyan ~]# du -sh /var/log/* | sort -rhk1
#根据/etc/passwd 第3列按照大小逆序排序
[root@Dezyan ~]# sort -rnk3  -t: /etc/passwd | head -3
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
deyzan:x:12346:12346::/home/deyzan:/bin/bash
docker:x:12345:12345::/home/docker:/sbin/nologin

#排序:在ip.txt文件中,以.为分隔符,按照第3列,第4列(若第三列相同则比较第四列)进行从小到大排序
[root@Dezyan ~]# sort -t. -k3,4 ip.txt

uniq 显示或忽略重复的行。

语法形式

uniq [选项]  [参数]

选项

		#邻行去重;
-i      #忽略大小写的差异;
-d      #所有邻近的重复行只被打印一次。
-c		#统计文件中相同行出现的次数

示例

#统计一个文件,其内容为:第一列是用户登录的ip地址,然后统计每个ip出现的次数,并取出次数最多的前5个
cat access.log | sort |  uniq -c | sort -rn | head -5   

日志分析实战(四剑客、sort、uniq、head的实际应用)

1)查看用户登录失败的ip地址
  • 1️⃣过滤出failed password,失败登录。 取行
  • 2️⃣ 提取出这行中的ip的列。 取列
  • 3️⃣ 对ip进行排序。 相同的ip在一起。
  • 4️⃣ 去掉重复,统计次数。 去重并统计次数。uniq -c
  • 5️⃣ 对次数排序并取出前20
#本命令在ubt系统中使用
root@Dezyan02:~# grep -i 'failed password'   /var/log/auth.log |awk '{print $(NF-3)}' |sort |uniq -c |sort -rn |head -20 
2)若IP以列规律显示,亦可使用awk命令
awk '{print $1}'  access.log  |sort  |uniq -c |sort -rn |head -20 

lrzsz 上传、下载文件的插件

安装

yum install -y  lrzsz

命令说明

rz 		#上传  rz回车即可或直接拖拽
sz 		#下载  sz /etc/hostname  下载指定的文件。

压缩与解压缩

tar

语法形式

tar [选项1]