Linux 命令
yum 安装常用软件
lrzsz支持xshell和SecureCRT上传下载 rz命令本地上传文件到服务器,sz命令发送文件到本地
1
[root@centos8 ~]# yum -y install vim tree net-tools wget curl lrzsz
PS1变量
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-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 | [root@localhost ~]# groupadd user6 |
删除用户组
格式: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 ## 改变所属用户 |
压缩和打包
1 | z:gzip,通过gzip格式压缩或者解压缩 |
gzip
1 | # gzip压缩 test.txt---> test.txt.gz,不会多出文件 |
bzip2
1 | # bzip2压缩: 压缩test.txt --> test.txt.bz2,不会多出文件 |
tar
1 | # 将test.txt 打包为test.txt.tar ,会多出一个test.txt.tar文件 |
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