Linux 命令
yum 安装常用命令
1 | [root@centos8 ~]# yum -y install vim tree net-tools wget curl lrzsz |
- lrzsz支持xshell和SecureCRT上传下载 rz命令本地上传文件到服务器,sz命令发送文件到本地
终端工具的使用
open in Terminal:打开终端
Linux以回车键表示命令结束,如果linux命令需要折行输入,那么可以以
\
表示每行结束1
2
3
4
5# [用户名@主机名称 当前位置] # 代表管理员 $ 普通用户
[hadoop@hadoop ~]$ su root
Password:
[root@hadoop hadoop]#
# 这个命令提示符是可以改变的。通过PS1系统变量改变,比如:1
2
3
4
5
6
7
8
9# 先查看PS1变量的结果值:
[hadoop@hadoop01 mazhonghua]$ echo $PS1
[\u@\h \W]\$
# \u:用户名,\h:主机名,\w:工作目录,\$:用户表示,root是$,普通用户是#
# 然后更改该值:
[hadoop@hadoop01 mazhonghua]$ PS1="[\t][\u@\h \W]\$ "
# 这是Linux定义变量的方式
#接下来命令提示符就会变成:
[11:48:45][hadoop@hadoop01 mazhonghua]$
命令的格式
- 选项 :
-
简写单词(短模式)--
单词 (长模式)- 也可以使用组合格式,比如:
-a -l
等价于-la
或者-al
常用命令归纳分类
-
分类 命令 文件管理 mkdir, rmdir, mv, rm, cp, touch, cat, tac, echo, more, less, head, tail, file, find, rename, ln, pwd, scp, alias 磁盘管理 ls, cd, du, df, mount, unmounts, fdisk 文档处理 wc, sort, uniq, cut, sed, awk, grep, vi, diff 用户和组 useradd, usermod, passwd, userdel, groupadd, groupdel, chgrp, su 文件传输 get, put, wget 网络通信 telnet, nc, ifconfig, ping, netstat, ip, host 备份压缩 gzip, bzip2, bunzip2, tar, zip 系统管理 exit, kill, last, ps, top, free, pstree, reboot, halt, shutdown, sudo, who, w, whoami, whereis, which, last, whatis 系统设置 clear, set, unset, hwclock, time, date, 其他 history, hostname, nohup, service, init, rpm, ssh, cal, yum 另外再教大家一种方式查看命令的帮助手册
1
[root@hadoop01 ~]# man clear
cd 路径
配合
pwd(查看当前路径)
使用1
2
3
4
5
6change directory (切换目录) 常使用方式:
cd sourcedir 进入用户主目录
cd ~ 进入用户主目录
cd - 返回进入此目录之前所在的目录
cd .. 返回上级目录(若当前目录为"/",则执行完后还在"/";".."为上级目录的意思)
cd ../.. 返回上两级目录
ls
list:显示目录内容列表
1
2
3
4
5
6
7
8
9
10
11
12使用格式:ls [选项]... [目录或文件名]
常用选项
-l:详细信息显示
-a:显示所有子目录和文件的信息,包括隐藏文件
-A:类似于“-a”,但不显示“.”和“..”目录的信息
-R:递归显示内容
-h:以友好方式显示文件大小
例子:
ls -l ## 列出文件详细信息, 也可以写作 ll
ls -lah ## 以友好方式显示包括隐藏文件的详细信息
du
查看目录和文件的磁盘占用
1
2
3
4
5
6
7
8
9disk usage:显示每个文件和目录的磁盘使用空间 使用格式:du [选项]... [目录或文件名]
常用选项:
-a:统计时包括所有的文件,而不仅仅只统计目录
-h:以更易读的字节单位(K、M等)显示信息
-s:只统计每个参数所占用空间总的大小
例子:
du -ah ##
df
显示磁盘相关信息
1
2
3
4
5
6
7disk free:显示磁盘相关信息 常用选项:
-h:以更易读的字节单位(K、M等)显示信息
-T:显示分区格式
例子:
df -h ## 显示磁盘信息,以友好方式
df -T -h ## 以友好格式显示磁盘信息,并且附加磁盘格式
touch
创建/修改文件信息
1
2
3创建空文件
或更新文件时间标记 使用格式:
touch 文件名
file
查看文件类型:根据文件内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18## 创建文件
[root@hadoop hadoop]# touch aa
[root@hadoop hadoop]# file aa
aa: empty
## 查看目录
[root@hadoop hadoop]# file apps
apps: directory
## 创建脚本文件
[root@hadoop hadoop]# touch a.sh
[root@hadoop hadoop]# file a.sh
a.sh: empty
## 添加 #!/bin/bash 后
[root@hadoop hadoop]# vim a.sh
[root@hadoop hadoop]# file a.sh
a.sh: Bourne-Again shell script, ASCII text executable
mkdir
- 创建文件夹
- -p 级联创建 ,父级目录不存在也创建
mkdir -p /root/ma/niu/zhu/dagou
## 上级目录不存在自动创建上一级目录,常用
cp
复制
-i 需要覆盖文件或目录时进行提醒
-r 文件夹复制时要迭代
-p 源文件的属性不变
cp 源文件路径 目标文件路径
cp 源文件路径 目标文件路径/
新的名字
mv
- 剪切,如果与源文件位置一样,则相当于重命名
- -i 覆盖时提示
- -f 强制覆盖,不询问
- -u: 新文件覆盖旧文件
rmdir
删除空目录
1
2
3
4删除空文件夹 常用选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
rmdir -p /root/aa/bb/cc/dd/ee
删除文件夹ee,如果删除ee后,dd变为空,则删除dd,依次类推
rm
删除文件和文件夹
1
2
3
4
5
6
7
8
9删除文件或目录 使用格式:rm [选项] 文件或目录
常用选项:
-f:强行删除文件或目录,不进行提醒
-i:删除文件或目录时提醒用户确认
-r:递归删除整个目录树
例子:
rm -rf /root/ma/ ## 不提醒递归删除整个目录,慎用慎用慎用
cat
查看文件,连接文件打印到控制台(不适合大文件,缓冲区有限)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 默认不显示行号
[root@hadoop hadoop]# cat a.sh
#!/bin/bash
# -n: 设置行号 :空行算一行
[root@hadoop hadoop]# cat -n a.sh
1 #!/bin/bash
2 a
3 b
4
# 使用nl 空行不算一行
[root@hadoop hadoop]# nl a.sh
1 #!/bin/bash
2 a
3 b
# 使用tac(cat倒置):倒置输出
[root@hadoop hadoop]# tac a.sh
b
a
#!/bin/bash通过cat添加文本到文件末尾.
cat << EOF
- 覆盖
> 文件名
- 追加
>> 文件名
- 最后以EOF结尾
- 需要注意的是,不论是覆盖还是追加,在涉及到变量操作时是需要进行转义的
1
2
3
4
5
6
7
8
9
10
11
12
13# 覆盖 格式一 将文件放在后面
#!/bin/bash
cat << EOF > /root/test.txt
Hello!
Test for cat and EOF!
EOF
# 格式二 将文件放在中间
#!/bin/bash
cat > /root/test.txt << EOF
Hello!
Test for cat and EOF!
EOF- 覆盖
head
- 屏幕显示文件开头若干行
- -n<数字>:指定显示头部内容的行数;
head -n 5 install.log
## 显示该文件前五行内容
tail
显示结尾若干行,查日志
-n: 设置行数(默认10行)
tail -n 2 a.sh
: 显示a.sh的最后二行-f: 查看最新追加的内容
tail -f a.sh
使用另外终端向a.sh写入后可看到追加内容\1
2
3
4
5例子:
tail file ## 显示文件file的最后10行
tail +20 file ## 显示文件file的内容,从第20行至文件末尾
tail -c 10 file ## 显示文件file的最后10个字符
tail -f install.log ## 显示最新追加的内容
more
翻页查看文件
1
2
3
4
5
6显示文件内容,每次显示一屏 使用方式:
按Space键:显示文本的下一屏内容。
按Enter键:只显示文本的下一行内容。
按h键:显示帮助屏,该屏上有相关的帮助信息。
按b键:显示上一屏内容。
按q键:退出more命令。
less
- 分屏滚动显示
- G:跳到结尾
- gg:跳到开始
- 按e键:向上滚动一行
- 按y键:向下滚动一行
- q:退出
echo
输出指定的字符串和变量
-e: 能识别特殊字符
-ne:输出不换行;最后是不换行的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42输出指定的字符串或者变量 常用选项:
-e:若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
例子:
echo 'ma' ## 输出ma
echo -e 'ma\n' ## 打印ma之后换行
echo -ne 'ma' 'zhonghua' ## 打印完不换行
echo 'ma' > ma.dat ## 覆盖
echo 'ma' >> ma.dat ## 追加
echo $PWD ## 输出变量内容
[root@hadoop hadoop]# A=12
[root@hadoop hadoop]# echo $A
12
# 默认原样输出
[root@hadoop hadoop]# echo "aa\nbb"
aa\nbb
## -e 能识别特殊字符:换行了
[root@hadoop hadoop]# echo -e "aa\nbb"
aa
bb
[root@hadoop hadoop]#
## 没有换行
[root@hadoop hadoop]# echo -ne "aa\nbb"
aa
bb[root@hadoop hadoop]#
>
重定向 ,覆盖添加
>>
追加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17[root@hadoop hadoop]# echo 'aaa' > a.txt
[root@hadoop hadoop]# cat a.txt
aaa
## 在文本后追加
[root@hadoop hadoop]# cal >> a.txt
[root@hadoop hadoop]# cat a.txt
aaa
August 2020
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
alias
别名
1
2
3
4
5> alias:查看别名
> alias la ='ll -a' : 设置别名
> unalias ls :取消别名
ln
设置连接
-s 创建软链接(如果不带 -s 参数,默认创建硬链接) -f 强制创建文件或目录的链接 -i 覆盖前先询问 -v 显示创建链接的过程 在 Linux 系统中 , 系统中有一个名为 superblock 的 “硬盘地图”。每个文件的权限与属性记录在 inode(“索引节点:index node “) 中,而且每个文件占用一个独立的 inode 表格,该表格的默认大小为 128 字节。
inode 号才是文件的唯一标识而非文件名。文件名只是为了方便人们的记忆和适用。
“ls -li” 结果中的第一列就是文件的 inode 号。系统是通过 inode 号寻找正确的文件数据块。
1
2
3
4
5
6
7[root@hadoop hadoop]# ls -li
total 16
1707903 -rw-r--r-- 1 root root 0 Aug 13 09:59 aa
1707725 drwxrwxr-x 4 hadoop hadoop 4096 Jul 15 20:31 apps
1707905 -rw-r--r-- 1 root root 17 Aug 13 10:07 a.sh
1707904 -rw-r--r-- 1 root root 157 Aug 13 10:20 a.txt文件的实际内容则保存在 block 中(大小可以是 1KB、2KB 或 4KB),一个 inode 的默认大小为 128B (在 Ext3 文件系统中),记录一个 block 则消耗 4B 。当文件的 inode 被写满后,Linux 系统会自动分配出一个 Block 块,专门用于像 innode 那样记录其他 block 块的信息,这样能把各个 block 块的内容串到一起,就能够让用户读到完整的文件内容了。
硬链接:
ln fileName newFileName
fileName 和 newFileName 都指向同一个文件,因此,无论你编辑哪一个文件,另一个文件也会做相应的改变。
1
2
3
4
5
6
7
8
9
10
11
12
13[root@hadoop hadoop]# ls -li
total 16
1707903 -rw-r--r-- 1 root root 0 Aug 13 09:59 aa
## 添加硬链接 硬链接是一个指针或者说是文件的引用。只占一点点空间。
[root@hadoop hadoop]# ln aa bb
## 可以看到该文件的 innode 连接数就会增加 1 ;
## 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除
[root@hadoop hadoop]# ls -l
total 16
-rw-r--r-- 2 root root 0 Aug 13 09:59 aa软链接:快捷方式
-s : 设置软连接1
2
3
4
5
6
7
8
9
10
11
12[root@hadoop hadoop]# ln -s a.txt b.txt
# innode没有添加
[root@hadoop hadoop]# ll
total 16
-rw-r--r-- 1 root root 157 Aug 13 10:20 a.txt
lrwxrwxrwx 1 root root 5 Aug 13 10:32 b.txt -> a.txt
# 删除软链接,但不删除实际数据
# 删除原始文件后 ,这条记录变红
# 测试vim编辑快捷方式后,删除的文件会被重新创建
[root@hadoop hadoop]# rm a.txt
1707906 lrwxrwxrwx 1 root root 5 Aug 13 10:33 b.txt -> a.txt
其他
su 切换用户
Ctrl+ C 终止程序
| :管道符,表示把前面命令内容的输出当做后面命令的输入
ps -aux | grep ssh
host :域名解析
host www.bai.du.com
netstat :查看网络接口
netstat -nltp
kill -9 pid
用户管理
用户:能够获取系统权限集合
组:权限的容器
1 | > ls -l |
用户类型
管理员root
- 具有使用所有权限的用户,uid为0
系统用户
- 保障系统运行的用户,一般不提供密码登录系统uid(1-499之间)
普通用户
- 一般用户,使用系统的权限受限,uid(500~60000之间)
查看用户信息
cat /etc/passwd
1
2
3
4
5
6
7
8
9
10
11
12root:x:0:0:root:/root:/bin/bash
# root: 用户名称
# x: 密码的占位符 密码信息:/etc/gshadow
# 0: 用户id
# 0: 用户组id
# root: 备注信息
# /root 家目录
# /bin/bash: shell 解释器类型
# 新建从500开始:
# hdp01:x:500:500:hdp01:/home/hdp01:/bin/bash
添加用户
1 | 格式:格式:useradd [options] LOGIN |
1 | # 不加任何选项创建用户时根据系统版本默认用户起始UID为第一个或已创建用户UID之后为准以此递增 |
修改用户
usermod
[选项] 用户名1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100-g: 修改用户所属群组。
-G: 修改用户所属的附加群组;在改变用户sudo权限时就可以使用这个选项。
-a: 仅和-G一块使用,将用户添加到附属组群。
-c 修改信息
# -u UID UserName:修改用户UID;不能和现有的UID冲突
[root@localhost ~]# id -u user3
1011
[root@localhost ~]# usermod -u 1012 user3
[root@localhost ~]# id -u user3
1012
# -g GID/GroupName UserName:修改用户默认主组;前提必需是指定的组已存在,否则无法指定
[root@localhost ~]# id -g user3
1011
[root@localhost ~]# usermod -g 1012 user3
[root@localhost ~]# id -g user3
1012
# -c “注释” UserName:修改用户信息注释(备注)
[root@localhost ~]# tail -1 /etc/passwd
user3:x:1012:1012:testuser:/home/user3:/bin/bash
[root@localhost ~]# usermod -c "testuser2" user3
[root@localhost ~]# tail -1 /etc/passwd
user3:x:1012:1012:testuser2:/home/user3:/bin/bash
# -d /HomeDirName UserName: 修改用户新家目录;
# 默认新家目录不会被创建,老家目录不会迁移至新家目录。
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2:/bin/bash
[root@localhost ~]# usermod -d /home/user2home1 user2
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2home1:/bin/bash
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user2 user2 83 Jul 17 20:59 user2
# -md /HomeDirName UserName: 修改用户新家目录
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2:/bin/bash
[root@localhost ~]# usermod -md /home/user2home2 user2
[root@localhost ~]# ll /home/
total 0
drwx------ 2 user2 user2 83 Jul 17 20:59 user2home2
# -s SHELL UserName:修改用户的默认登录Shell类型;
# Shell类型可用命令(cat /etc/shells)查看
# (如Shell类型为/sbin/nologin为用户不可登录)
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2home2:/bin/bash
[root@localhost ~]# usermod -s /sbin/nologin user2
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2home2:/sbin/nologin
# -G GroupName UserName:修改(覆盖)用户附加组;
# 多组时组与组之间用逗号分隔,前提必需是指定的组已存在,否则无法指定。
[root@localhost ~]# id user3
uid=1012(user3) gid=1012(user4) groups=1012(user4),1013(testgp1)
[root@localhost ~]# usermod -G testgp2 user3
[root@localhost ~]# id user3
uid=1012(user3) gid=1012(user4) groups=1012(user4),1014(testgp2)
#aG GroupName UserName:修改(追加)用户附加组;
# 多组时组与组之间用逗号分隔,前提必需是指定的组已存在,否则无法指定。
[root@localhost ~]# id user3
uid=1012(user3) gid=1012(user4) groups=1012(user4),1014(testgp2)
[root@localhost ~]# usermod -aG testgp1 user3
[root@localhost ~]# id user3
uid=1012(user3) gid=1012(user4) groups=1012(user4),1013(testgp1),1014(testgp2)
#-l NewUserName OldUserName:修改新登录用户名;
# 默认用户家目录属性不变更沿用老用户名的家目录
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user2:x:1001:1002::/home/user2home2:/sbin/nologin
[root@localhost ~]# usermod -l user3 user2
[root@localhost ~]# tail -2 /etc/passwd
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user3:x:1001:1002::/home/user2home2:/sbin/nologin
# -L UserName:锁定指定用户;
# 实际就是在文件(/etc/shadow)密码位首位添加个叹号(!)
[root@localhost ~]# usermod -L user3
[root@localhost ~]# tail -2 /etc/shadow
chrony:!!:17911::::::
user3:!$6$i730d3Eq$6EQFStDoK2wj3sfbJJ3MFcA6eO9YAxWbkP81.hOE4lnRLejdm5rsPNiTyeqRZy36gsTFPXB/cOYeLBTKVL9JD0:18094:0:99999:7:::
# -U UserName:解锁指定用户;
# 实际就是在文件(/etc/shadow)密码位首位删除个叹号(!)
[root@localhost ~]# usermod -U user3
[root@localhost ~]# tail -2 /etc/shadow
chrony:!!:17911::::::
user3:$6$i730d3Eq$6EQFStDoK2wj3sfbJJ3MFcA6eO9YAxWbkP81.hOE4lnRLejdm5rsPNiTyeqRZy36gsTFPXB/cOYeLBTKVL9JD0:18094:0:99999:7:::
删除用户
格式:userdel [options] LOGIN
- -r:删除用户时同时删除用户家目录和邮件目录
1 | # 不加任何选项删除用户时只删除用户本身, |
1 | -r:删除用户时同时删除用户家目录和邮件目录 |
修改密码
1 | 格式:passwd [options] [username] |
1 | #不指定用户名为设置(修改)当前登录用户密码 |
用户组管理
系统组
- 一般加入一些系统用户
普通用户组
- 可以加入多个用户
私有组/基本组
- 创建用户的时候,没有指明所属的组,就为该用户设一个与用户名同名的私有组,该私有组添加了用户会变成普通组
查看用户组
1 | 格式:id [OPTION]… [USER]‘ |
1 | # 不加任何选项和指定用户为查看当前登录用户的ID信息 |
修改用户组
格式:groupadd [options] group
-g GID GroupName
:创建用户组时指定用户组GID;不能和现有的GID冲突1
2
3
4
5
6
7
8
9
10
11
12
13
14[root@localhost ~]# groupadd user6
[root@localhost ~]# tail -4 /etc/group
user2:x:1002:
user3:x:1003:
user5:x:1005:
user6:x:1006:
[root@localhost ~]# groupadd -g 1008 user8
[root@localhost ~]# tail -5 /etc/group
user2:x:1002:
user3:x:1003:
user5:x:1005:
user6:x:1006:
user8:x:1008:
删除用户组
格式:groupdel [options] GROUP
说明:附加组可以直接删除;主组必须先把所属用户移除才可删除
1 | # 附加组可以直接删除;主组必须先把所属用户移除才可删除 |
切换用户su
su [options…] [-] [user [args…]]
1 | # 不加任何选项为非登录式切换,即不会读取目标用户的配置文件(环境变量); |
1 | # – UserName:切换用户身份(环境变量同时切换);不加用户名默认切换至root用户 |
1 | [user3@localhost ~]$ su - |
文件权限
d rwx r-x r-x (也可以用二进制表示 111 101 101 –> 755)
数字 4 、2 和 1表示读、写、执行权限
d:标识节点类型(d:文件夹 -:文件 l:链接)
r:可读 w:可写 x:可执行
文件 | 文件夹 | |
---|---|---|
r | 可读取内容 | 可以ls |
w | 可修改文件的内容 | 可以在其中创建或者删除子节点 |
x | 能否运行这个文件 | 能否cd进入这个目录 |
u第一组rwx:表示这个文件的拥有者对它的权限:可读可写可执行
g第二组r-x: 表示这个文件的所属组用户对它的权限:可读,不可写,可执行
o第三组r-x: 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行
文件夹的执行权限
- 如果对文件夹有rw的权限:ls的时候,仅仅能知道目录下有文件,看不到详细信息
- 没有x权限:不能进入文件夹
- 有rwx权限的文件夹可以删除目录下的所有文件(没有对文件的权限也可以)
修改文件的权限
1 | chmod g-rw haha.dat ## 表示将haha.dat对所属组的rw权限取消 |
命令 | 组类型 | 操作符 | 权限 | 组对应的用户 |
---|---|---|---|---|
u | +(加入) | r/w/x | 文件的拥有者 | |
chmod | g | -(除去) | r/w/x | 所属组用户 |
o | =(设定) | r/w/x | 其他用户 | |
a | 所用户 |
修改文件所有权
1 | chown angela mydata ## 改变所属用户 |
压缩和打包
z:gzip,通过gzip格式压缩或者解压缩
c:create,创建压缩文件
x:extract,解压缩文件,或者叫还原文件
v:verbose,显示过程
f:file,指定文件
t:list,列出文件
j:支持bzip2压缩和解压缩
gzip压缩 test.txt—> test.txt.gz,不会多出文件
gzip test.txt
gzip解压缩
gzip -d test.txt.gz
bzip2压缩: 压缩test.txt –> test.txt.bz2,不会多出文件
bzip2 test.txt
bzip2解压缩
bzip2 -d test.txt.bz2
- 或者
bunzip2 test.txt.bz2
将test.txt 打包为test.txt.tar ,会多出一个test.txt.tar文件
tar -cvf test.txt.tar test.txt
追加打包: 表示将test2.txt文件追加到test.txt.tar当中
tar -rvf test.txt.tar test2.txt
打包并压缩 tar -zcvf ma.tar.gz /root/test
解包
tar -xvf test.txt.tar
解包并解压缩` tar -zxvf ma.tar.gz
解包解压缩到指定的路径
tar -zxvf ma.tar.gz -C /test
查看压缩包的内容
tar -ztvf ma.tar.gz
打包并压缩为bz2
tar -jcvf test.tar.bz2
解压:
tar -jxvf test.bar.bz2
unzip
把文件解压到当前目录下
1
unzip test.zip
如果要把文件解压到指定的目录下,需要用到-d参数。
1
unzip -d /temp test.zip
解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数
1
2unzip -n test.zip
unzip -n -d /temp test.zip只看一下zip压缩包中包含哪些文件,不进行解压缩
1
unzip -l test.zip
查看显示的文件列表还包含压缩比率
1
unzip -v test.zip
检查zip文件是否损坏
1
unzip -t test.zip
将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
1
unzip -o test.zip -d /tmp/
进程
进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。
子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程
进程状态
- 总体来看主要包括三种,分别是就绪状态、运行状态、等待状态
- 就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,
- 运行状态的进程在时间片用完后会重新转换成就绪状态,
- 如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。
进程管理
ps命令:用于报告当前系统的进程状态。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42ps 命令常用选项包括:
1、a显示所有用户的进程
2、u显示用户名和启动时间
3、x显示所有进程,包括没有控制终端的进程
4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
5、l显示进程详细信息,按长格式显示
ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息
ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息
ps -el 按长格式显示进程详细信息
USER: 进程所有者
PID: 进程号
PPID: 进程的父进程ID
%CPU: CPU占用率
C: 进程的CPU占用率
%MEM: 内存占用率
VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS: 指明了当前实际占用了多少内存;
TTY: 终端的次要装置号码 (minor device number of tty)
F:进程的标志
S:进程的状态
STAT: 该进程程的状态,有以下值
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有记忆体分页分配并锁在记忆体内
PRI:进程的优先权
NI:进程的Nice值
ADDR:进程的地址空间
SZ:进程占用内存的大小
WCHAN:进程当前是否在运行
TTY:进程所属终端
START: 进程开始时间
TIME: 执行的运行时间
COMMAND:所执行的指令
CMD:进程的命令PID
%CPU: CPU占用率
C: 进程的CPU占用率
COMMAND:所执行的指令
kill/pidof/pkill命令
1 | 1、kill pid 直接杀死进程,但不能保证一定能杀死 |
进程切换
前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;
后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行
1 | 1、ctrl + c 终止进程 |
top命令
Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,
它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。
它也会显示内存和 CPU 使用率过高的正在运行的进程。
按q键退出查看
pstree命令
将进程间的关系以树结构的形式展示,能清楚看各进程之间的父子关系
pstree
:以树状形式显示进程pstree -p
: 以树状形式显示进程,并且显示进程号
JPS命令
JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。
不是linux系统自带的。主要任务就是用来检查java进程的。
最后
Linux命令参考:https://www.ityww.cn/linux/linux-command