Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以 通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。 本章就将分类介绍 常用的基本 shell 命令。
1 帮助命令
1.1 man 获得帮助信息
1)基本语法
man [命令或配置文件] (功能描述:获得帮助信息)
2)显示说明
3)案例实操
(1)查看 ls
[root@hadoop101 ~]# man ls
# type 查看是否是系统命令
[root@hadoop100 ~]# type cd
cd 是 shell 内嵌
[root@hadoop100 ~]# type ls
ls 是 `ls --color=auto' 的别名
[root@hadoop100 ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@hadoop100 ~]# type exit
exit 是 shell 内嵌
[root@hadoop100 ~]# type history # history是查看执行过的命令
history 是 shell 内嵌
[root@hadoop100 ~]#
[root@hadoop100 ~]# man -f cd # man -f 查看内部命令
cd (1) - GNU Bourne-Again SHell (GNU 命令解释程序 “Bour...
cd (3tcl) - 改变工作目录
cd (1p) - change the working directory
[root@hadoop100 ~]#
[root@hadoop100 ~]# man 1p cd
[root@hadoop100 ~]# man 3 cd
1.2 help 获得 shell 内置命令的帮助信息
一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令 被称为“外部命令”
1)基本语法
help 命令(功能描述:获得 shell 内置命令的帮助信息)
2)案例实操
(1)查看 cd 命令的帮助信息
[root@hadoop101 ~]# help cd
[root@hadoop100 ~]# help cd 查看内部命令帮助文档
.。。。。
[root@hadoop100 ~]# help ls
bash: help: 没有与 `ls' 匹配的帮助主题。尝试 `help help' 或者 `man -k ls' 或者 `info ls'。
[root@hadoop100 ~]# ls --help 查看外部命令帮助文档
[root@hadoop100 ~]# cd /root/桌面/ #绝对路径
[root@hadoop100 桌面]# cd ../视频/ #相对路径
[root@hadoop100 视频]# cd - # 返回上一次的目录
/root/桌面
[root@hadoop100 桌面]# cd - # 返回上一次的目录
/root/视频
[root@hadoop100 视频]# cd
1.3 常用快捷键
2 文件目录类
2.1 pwd 显示当前工作目录的绝对路径
pwd:print working directory 打印工作目录
1)基本语法
pwd (功能描述:显示当前工作目录的绝对路径)
2)案例实操
(1)显示当前工作目录的绝对路径
[root@hadoop101 ~]# pwd /root
2.2 ls 列出目录的内容
ls:list 列出目录内容
1)基本语法
ls [选项] [目录或是文件]
2)选项说明
[root@hadoop100 ~]# ls -l /bin/ | grep sh
# -l 以行展示
# | grep 管道、筛选
3)显示说明
每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小用byte 来表示 建立或最近修改的时间 名字
4)案例实操
(1)查看当前目录的所有内容信息
[atguigu@hadoop101 ~]$ ls -al
总用量 44
drwx------. 5 atguigu atguigu 4096 5 月 27 15:15 .
drwxr-xr-x. 3 root root 4096 5 月 27 14:03 ..
drwxrwxrwx. 2 root root 4096 5 月 27 14:14 hello
-rwxrw-r--. 1 atguigu atguigu 34 5 月 27 14:20 test.txt
2.3 cd 切换目录
cd:Change Directory 切换路径
1)基本语法
cd [参数]
2)参数说明
3)案例实操
(1)使用绝对路径切换到 root 目录
[root@hadoop101 ~]# cd /root/
(2)使用相对路径切换到“公共的”目录
[root@hadoop101 ~]# cd 公共的/
(3)表示回到自己的家目录,亦即是 /root 这个目录
[root@hadoop101 公共的]# cd ~
(4)cd- 回到上一次所在目录
[root@hadoop101 ~]# cd -
(5)表示回到当前目录的上一级目录,亦即是 “/root/公共的”的上一级目录的意思;
[root@hadoop101 公共的]# cd ..
2.4 mkdir 创建一个新的目录
mkdir:Make directory 建立目录
1)基本语法
mkdir [选项] 要创建的目录
2)选项说明
3)案例实操
(1)创建一个目录
[root@hadoop101 ~]# mkdir xiyou
[root@hadoop101 ~]# mkdir xiyou/mingjie
(2)创建一个多级目录
[root@hadoop101 ~]# mkdir -p xiyou/dssz/meihouwang
[root@hadoop100 ~]# mkdir a # 创建a文件夹
[root@hadoop100 ~]# ls
a initial-setup-ks.cfg 模板 图片 下载 桌面
anaconda-ks.cfg 公共 视频 文档 音乐
[root@hadoop100 ~]# ls
a initial-setup-ks.cfg 模板 图片 下载 桌面
anaconda-ks.cfg 公共 视频 文档 音乐
[root@hadoop100 ~]# mkdir b c # 创建b、c文件夹
[root@hadoop100 ~]# ls
a b initial-setup-ks.cfg 模板 图片 下载 桌面
anaconda-ks.cfg c 公共 视频 文档 音乐
[root@hadoop100 ~]# mkdir d/e/f
mkdir: 无法创建目录"d/e/f": 没有那个文件或目录
[root@hadoop100 ~]# mkdir -p d/e/f # 创建d/e/f文件夹
[root@hadoop100 ~]# ls
a b d 公共 视频 文档 音乐
anaconda-ks.cfg c initial-setup-ks.cfg 模板 图片 下载 桌面
[root@hadoop100 ~]# cd d
[root@hadoop100 d]# cd e/f
[root@hadoop100 f]# pwd
/root/d/e/f
[root@hadoop100 f]#
2.5 rmdir 删除一个空的目录
rmdir:Remove directory 移除目录
1)基本语法
rmdir 要删除的空目录
2)案例实操
(1)删除一个空的文件夹
[root@hadoop101 ~]# rmdir xiyou/dssz/meihouwang
[root@hadoop100 e]# cd ~
[root@hadoop100 ~]# ls
a b d 公共 视频 文档 音乐
anaconda-ks.cfg c initial-setup-ks.cfg 模板 图片 下载 桌面
[root@hadoop100 ~]# rmdir a #删除a文件夹
[root@hadoop100 ~]# ls
anaconda-ks.cfg c initial-setup-ks.cfg 模板 图片 下载 桌面
b d 公共 视频 文档 音乐
[root@hadoop100 ~]# rmdir b c #删除b、c文件夹
[root@hadoop100 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
d 公共 视频 文档 音乐
[root@hadoop100 ~]# rmdir d
rmdir: 删除 "d" 失败: 目录非空
[root@hadoop100 ~]# rmdir -p d/e/f #删除d/e/f文件夹
[root@hadoop100 ~]# ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
[root@hadoop100 ~]#
2.6 touch 创建空文件
1)基本语法
touch 文件名称
2)案例实操
[root@hadoop100 ~]# touch hello
[root@hadoop100 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
hello 公共 视频 文档 音乐
[root@hadoop100 ~]#
2.7 cp 复制文件或目录
1)基本语法
cp [选项] source dest (功能描述:复制source文件到dest)
2)选项说明
3)参数说明
4)经验技巧
强制覆盖不提示的方法:\cp
5)案例实操
(1)复制文件
[root@hadoop101 ~]# cp xiyou/dssz/suwukong.txt xiyou/mingjie/
[root@hadoop100 ~]# ls
a hello 公共 视频 文档 音乐
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
[root@hadoop100 ~]# cp initial-setup-ks.cfg /a #将 ~ 目录下的hello复制到a目录下
[root@hadoop100 ~]# cd - #返回上一个目录
/root/a
[root@hadoop100 a]# ls
hello
[root@hadoop100 ~]# cp initial-setup-ks.cfg a/hello #将initial-setup-ks.cfg的内容覆盖到hello 文件里
cp:是否覆盖"a/hello"? y #确定覆盖吗?
[root@hadoop100 ~]# cd -
/root/a
[root@hadoop100 a]# ls
hello
[root@hadoop100 a]# vi hello #
[root@hadoop100 ~]# cp initial-setup-ks.cfg a/hello # 等于 \cp initial-setup-ks.cfg a/hello
(2)递归复制整个文件夹
[root@hadoop101 ~]# cp -r xiyou/dssz/ ./
[root@hadoop100 ~]# cp -r a/ /home/test
2.8 rm 删除文件或目录
1)基本语法
rm [选项] deleteFile (功能描述:递归删除目录中所有内容)
2)选项说明
3)案例实操
(1)删除目录中的内容
[root@hadoop101 ~]# rm xiyou/mingjie/sunwukong.txt
(2)递归删除目录中所有内容
[root@hadoop101 ~]# rm -rf dssz/
[root@hadoop100 ~]# rm hello
rm:是否删除普通空文件 "hello"?y
[root@hadoop100 ~]# ls
a initial-setup-ks.cfg 模板 图片 下载 桌面
anaconda-ks.cfg 公共 视频 文档 音乐
[root@hadoop100 ~]# rm -r a
rm:是否进入目录"a"? y
rm:是否删除普通文件 "a/hello"?y
rm:是否删除目录 "a"?y
[root@hadoop100 ~]# ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
#谨慎使用
[root@hadoop100 ~]# rm -rf a
[root@hadoop100 a]# rm -f ./* #删除当前目录下所有内容
2.9 mv 移动文件与目录或重命名
1)基本语法
(1)mv oldNameFile newNameFile (功能描述:重命名)
(2)mv /temp/movefile /targetFolder (功能描述:移动文件)
2)案例实操
(1)重命名
[root@hadoop101 ~]# mv xiyou/dssz/suwukong.txt xiyou/dssz/houge.txt
(2)移动文件
[root@hadoop101 ~]# mv xiyou/dssz/houge.txt ./
2.10 cat 查看文件内容
查看文件内容,从第一行开始显示。
1)基本语法
cat [选项] 要查看的文件
2)选项说明
3)经验技巧
一般查看比较小的文件,一屏幕能显示全的。
4)案例实操
(1)查看文件内容并显示行号
[atguigu@hadoop101 ~]$ cat -n houge.txt
2.11 more 文件内容分屏查看器
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件 的内容。more 指令中内置了若干快捷键,详见操作说明。
1)基本语法
more 要查看的文件
2)操作说明
3)案例实操
(1)采用more查看文件
[root@hadoop101 ~]# more smartd.conf
2.12 less 分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加 强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后 才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1)基本语法
less 要查看的文件
2)操作说明
3)经验技巧
用SecureCRT时[pagedown]和[pageup]可能会出现无法识别的问题。
4)案例实操
(1)采用less查看文件
[root@hadoop101 ~]# less smartd.conf
2.13 echo
echo 输出内容到控制台
1)基本语法
echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换
2)案例实操
[atguigu@hadoop101 ~]$ echo “hello\tworld”
hello\tworld
[atguigu@hadoop101 ~]$ echo -e “hello\tworld”
hello world
查看某个环境变量
[root@hadoop100 ~]# echo $USER
root
2.14 head 显示文件头部内容
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
1)基本语法
head 文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
2)选项说明
3)案例实操
(1)查看文件的头2行
[root@hadoop101 ~]# head -n 2 smartd.conf
2.15 tail 输出文件尾部内容
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
1) 基本语法
(1)tail 文件 (功能描述:查看文件尾部10行内容)
(2)tail -n 5 文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)
(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)
2) 选项说明
3)案例实操
(1)查看文件尾 1 行内容
[root@hadoop101 ~]# tail -n 1 smartd.conf
(2)实时追踪该档的所有更新
[root@hadoop101 ~]# tail -f houge.txt
Ctrl + s 暂停 tail -f
Ctrl + q 继续 tail -f
Ctrl + c 退出
[root@hadoop100 ~]# ls -i anaconda-ks.cfg #查看anaconda-ks.cfg文件的索引节点号(index)
33580111 anaconda-ks.cfg
[root@hadoop100 ~]#
2.16 > 输出重定向和 >> 追加
1)基本语法
(1)ls -l > 文件 (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
(2)ls -al >> 文件 (功能描述:列表的内容追加到文件 aa.txt 的末尾)
(3)cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
(4)echo “内容” >> 文件
2)案例实操
(1)将 ls 查看信息写入到文件中
[root@hadoop101 ~]# ls -l>houge.txt
(2)将 ls 查看信息追加到文件中
[root@hadoop101 ~]# ls -l>>houge.txt
(3)采用 echo 将 hello 单词追加到文件中
[root@hadoop101 ~]# echo hello>>houge.txt
2.17 ln 软链接
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放 了链接其他文件的路径
1)基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
补充:
ln [原文件或目录] [软链接名] (功能描述:给原文件创建一个硬链接)
2)经验技巧
删除软链接: rm -rf 软链接名,而不是 rm -rf 软链接名/
如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
查询:通过 ll 就可以查看,列表属性第 1 位是 l,尾部会有位置指向。
3)案例实操
(1)创建软连接
[root@hadoop101 ~]# mv houge.txt xiyou/dssz/
[root@hadoop101 ~]# ln -s xiyou/dssz/houge.txt ./houzi
[root@hadoop101 ~]# ll
lrwxrwxrwx. 1 root root 20 6 月 17 12:56 houzi -> xiyou/dssz/houge.txt
[root@hadoop101 ~]# pwd -P # 查看文件源地址(过滤掉软连接)
# -P 抛开软连接的影响直接查看物理路径
(2)删除软连接(注意不要写最后的/)
[root@hadoop101 ~]# rm -rf houzi
(3)进入软连接实际物理路径
[root@hadoop101 ~]# ln -s xiyou/dssz/ ./dssz
[root@hadoop101 ~]# cd -P dssz/
2.18 history 查看已经执行过历史命令
1)基本语法
history (功能描述:查看已经执行过历史命令)
2)案例实操
(1)查看已经执行过的历史命令
[root@hadoop101 test1]# history
[root@hadoop100 ~]# history
1 ls
2 exit
3 ls
4 ifconfig
。。。。
[root@hadoop100 ~]# !110 #调用110行的指令
echo $USER
root
[root@hadoop100 ~]# !108
ls
anaconda-ks.cfg 公共 视频 文档 音乐
initial-setup-ks.cfg 模板 图片 下载 桌面
[root@hadoop100 ~]# history -c #清空历史记录
7.3 时间日期类
1)基本语法
date [OPTION]… [+FORMAT]
2)选项说明
3)参数说明
1 date 显示当前时间
1)基本语法
(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date “+%Y-%m-%d %H:%M:%S” (功能描述:显示年月日时分秒)
2)案例实操
(1)显示当前时间信息
[root@hadoop101 ~]# date
2022年 09月 08日 星期四 00:20:42 CST
(2)显示当前时间年月日
[root@hadoop101 ~]# date +%Y%m%d
20170619
(3)显示当前时间年月日时分秒
[root@hadoop101 ~]# date "+%Y-%m-%d %H:%M:%S"
2017-06-19 20:54:58
2 date 显示非当前时间
1)基本语法
(1)date -d ‘1 days ago’ (功能描述:显示前一天时间)
(2)date -d ‘-1 days ago’ (功能描述:显示明天时间)
2)案例实操
(1)显示前一天
[root@hadoop101 ~]# date -d '1 days ago'
2017 年 06 月 18 日 星期日 21:07:22 CST
(2)显示明天时间
[root@hadoop101 ~]#date -d '-1 days ago'
2017 年 06 月 20 日 星期日 21:07:22 CST
3 date 设置系统时间
1)基本语法
date -s 字符串时间
2)案例实操
(1)设置系统当前时间
[root@hadoop101 ~]# date -s "2017-06-19 20:52:18"
如果系统时间乱了可以通过ntpdate 更新时间
[root@hadoop100 ~]# ntpdate #ntpdate 后面加同步时间得服务器
4 cal 查看日历
1)基本语法
cal [选项] (功能描述:不加选项,显示本月日历)
2)选项说明
3)案例实操
(1)查看当前月的日历
[root@hadoop101 ~]# cal
(2)查看 2017 年的日历
[root@hadoop101 ~]# cal 2017
[root@hadoop101 ~]# cal -3
[root@hadoop101 ~]# cal -m
4 用户管理命令
1 useradd 添加新用户
1)基本语法
useradd 用户名 (功能描述:添加新用户)
useradd -g 组名 用户名 (功能描述:添加新用户到某个组)
2)案例实操
(1)添加一个用户
[root@hadoop101 ~]# useradd tangseng
[root@hadoop101 ~]#ll /home/
[root@hadoop100 ~]# useradd -d /home/dave david
[root@hadoop100 ~]# cd /home
[root@hadoop100 home]# ls
string-int dave
[root@hadoop100 home]#
2 passwd 设置用户密码
1)基本语法
passwd 用户名 (功能描述:设置用户密码)
2)案例实操
(1)设置用户的密码
[root@hadoop101 ~]# passwd tangseng
3 id 查看用户是否存在
1)基本语法
id 用户名
2)案例实操
(1)查看用户是否存在
[root@hadoop101 ~]#id tangseng
4 cat /etc/passwd 查看创建了哪些用户
1)案例实操
[root@hadoop101 ~]# cat /etc/passwd
5 su 切换用户
su: swith user 切换用户
1)基本语法
su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)
2)案例实操
(1)切换用户
[root@hadoop101 ~]#su tangseng
[root@hadoop101 ~]#echo $PATH
/usr/lib64/qt- 3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/b in
[root@hadoop101 ~]#exit
[root@hadoop101 ~]#su - tangseng
[root@hadoop101 ~]#echo $PATH
/usr/lib64/qt- 3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/t angseng/bin
6 userdel 删除用户
1)基本语法
(1)userdel 用户名 (功能描述:删除用户但保存用户主目录)
(2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)
2)选项说明
3)案例实操
(1)删除用户但保存用户主目录
[root@hadoop101 ~]#userdel tangseng
[root@hadoop101 ~]#ll /home/
(2)删除用户和用户主目录,都删除
[root@hadoop101 ~]#useradd zhubajie
[root@hadoop101 ~]#ll /home/
[root@hadoop101 ~]#userdel -r zhubajie
[root@hadoop101 ~]#ll /home/
7 who 查看登录用户信息
1)基本语法
(1)whoami (功能描述:显示自身用户名称)
(2)who am i (功能描述:显示登录用户的用户名以及登陆时间)
2)案例实操
(1)显示自身用户名称
[root@hadoop101 opt]# whoami
(2)显示登录用户的用户名
[root@hadoop101 opt]# who am i
8 sudo 设置普通用户具有 root 权限
1)添加 atguigu 用户,并对其设置密码。
[root@hadoop101 ~]#useradd atguigu
[root@hadoop101 ~]#passwd atguigu
2)修改配置文件
[root@hadoop101 ~]#vi /etc/sudoers
修改 /etc/sudoers 文件,找到下面一行(91 行),在 root 下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
atguigu ALL=(ALL) ALL
或者配置成采用 sudo 命令时,不需要输入密码
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
修改完毕,现在可以用 atguigu 帐号登录,然后用命令 sudo ,即可获得 root 权限进行 操作。
3)案例实操
(1)用普通用户在/opt 目录下创建一个文件夹
[atguigu@hadoop101 opt]$ sudo mkdir module
[root@hadoop101 opt]# chown atguigu:atguigu module/
9 usermod 修改用户
1)基本语法
usermod -g 用户组 用户名
2)选项说明
3)案例实操
(1)将用户加入到用户组
[root@hadoop101 opt]# usermod -g root zhubajie
5 用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同,
如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。
1 groupadd 新增组
1)基本语法
groupadd 组名
2)案例实操
(1)添加一个xitianqujing组
[root@hadoop101 opt]#groupadd xitianqujing
2 groupdel 删除组
1)基本语法
groupdel 组名
2)案例实操
(1)删除xitianqujing组
[root@hadoop101 opt]# groupdel xitianqujing
3 groupmod 修改组
1)基本语法
groupmod -n 新组名 老组名
1)选项说明
3)案例实操
(1)修改atguigu组名称为atguigu1
[root@hadoop101 ~]#groupadd xitianqujing
[root@hadoop101 ~]# groupmod -n xitian xitianqujing
4 cat /etc/group 查看创建了哪些组
1)基本操作
[root@hadoop101 atguigu]# cat /etc/group
6 文件权限类
1 文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做 了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属 的用户和组。
1)从左到右的 10 个字符表示
如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:
(1)0 首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
-代表文件
d 代表目录
l 链接文档(link file);
(2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
(3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
(4)第7-9位确定其他用户拥有该文件的权限 —Other
2)rwx 作用文件和目录的不同解释
(1)作用到文件:
[ r ]代表可读(read): 可以读取,查看
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前 提条件是对该文件所在的目录有写权限,才能删除该文件
[ x ]代表可执行(execute):可以被系统执行
(2)作用到目录:
[ r ]代表可读(read): 可以读取,ls查看目录内容
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
[ x ]代表可执行(execute):可以进入该目录
3)案例实操
[root@hadoop101 ~]# ll
总用量 104
-rw-------. 1 root root 1248 1 月 8 17:36 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 1 月 12 14:02 dssz
lrwxrwxrwx. 1 root root 20 1 月 12 14:32 houzi -> xiyou/dssz/houge.tx
文件基本属性介绍
(1)如果查看到是文件:链接数指的是硬链接个数。
(2)如果查看的是文件夹:链接数指的是子文件夹个数。
2 chmod 改变权限
1)基本语法
第一种方式变更权限
chmod [{ugoa}{±=}{rwx}] 文件或目录
第二种方式变更权限
chmod [mode=421 ] [文件或目录]
2)经验技巧
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
r=4 w=2 x=1 rwx=4+2+1=7
3)案例实操
(1)修改文件使其所属主用户具有执行权限
[root@hadoop101 ~]# cp xiyou/dssz/houge.txt ./ [root@hadoop101 ~]# chmod u+x houge.txt
(2)修改文件使其所属组用户具有执行权限
[root@hadoop101 ~]# chmod g+x houge.txt
(3)修改文件所属主用户执行权限,并使其他用户具有执行权限
[root@hadoop101 ~]# chmod u-x,o+x houge.txt
(4)采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权 限。
[root@hadoop101 ~]# chmod 777 houge.txt
(5)修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可 执行权限。
[root@hadoop101 ~]# chmod -R 777 xiyou/
3 chown 改变所有者
1)基本语法
chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有 者)
2)选项说明
3)案例实操
(1)修改文件所有者
[root@hadoop101 ~]# chown atguigu houge.txt
[root@hadoop101 ~]# ls -al
-rwxrwxrwx. 1 atguigu root 551 5 月 23 13:02 houge.txt
(2)递归改变文件所有者和所有组
[root@hadoop101 xiyou]# ll
drwxrwxrwx. 2 root root 4096 9 月 3 21:20 xiyou
[root@hadoop101 xiyou]# chown -R atguigu:atguigu xiyou/
[root@hadoop101 xiyou]# ll
drwxrwxrwx. 2 atguigu atguigu 4096 9 月 3 21:20 xiyou
4 chgrp 改变所属组
1)基本语法
chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组)
2)案例实操
(1)修改文件的所属组
[root@hadoop101 ~]# chgrp root houge.txt
[root@hadoop101 ~]# ls -al
-rwxrwxrwx. 1 atguigu root 551 5 月 23 13:02 houge.txt
7 搜索查找类
1 find 查找文件或者目录
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1)基本语法
find [搜索范围] [选项]
2)选项说明
3)案例实操
(1)按文件名:根据名称查找/目录下的filename.txt文件。
[root@hadoop101 ~]# find xiyou/ -name "*.txt"
(2)按拥有者:查找/opt目录下,用户名称为-user的文件
[root@hadoop101 ~]# find xiyou/ -user atguigu
(3)按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)
[root@hadoop101 ~]find /home -size +204800
2 locate 快速定位文件路径
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给 定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确 度,管理员必须定期更新 locate 时刻。
1)基本语法
locate 搜索文件
2)经验技巧
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创 建 locate 数据库。
3)案例实操
(1)查询文件夹
[root@hadoop101 ~]# updatedb
[root@hadoop101 ~]#locate tmp
[root@hadoop100 home]# which ls #定位Linux中命令得位置
alias ls='ls --color=auto'
/usr/bin/ls
[root@hadoop100 home]#
[root@hadoop100 home]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@hadoop100 home]#
3 grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1)基本语法
grep 选项 查找内容 源文件
2)选项说明
3)案例实操
(1)查找某文件在第几行
[root@hadoop101 ~]# ls | grep -n test
[root@hadoop100 ~]# grep -n boot initial-setup-ks.cfg
3:xconfig --startxonboot
12:# Run the Setup Agent on first boot
13:firstboot --enable
23:network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
24:network --bootproto=dhcp --hostname=hadoop100
31:# System bootloader configuration
32:bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
36:part /boot --fstype="xfs" --ondisk=sda --size=1024
[root@hadoop100 ~]#
[root@hadoop100 ~]# wc initial-setup-ks.cfg # wc是word count缩写,词频统计
71 173 1943 initial-setup-ks.cfg # 71 行数,173 单词数 1943字节数
[root@hadoop100 ~]# grep -n boot initial-setup-ks.cfg | wc #将 grep -n boot initial-setup-ks.cfg执行得结果进行统计
8 34 370
[root@hadoop100 ~]#
8 压缩和解压类
1 gzip/gunzip 压缩
1)基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
2)经验技巧
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
(3)同时多个文件会产生多个压缩包
3)案例实操
(1)gzip压缩
[root@hadoop101 ~]# ls test.java
[root@hadoop101 ~]# gzip houge.txt
[root@hadoop101 ~]# ls houge.txt.gz
(2)gunzip解压缩文件
[root@hadoop101 ~]# gunzip houge.txt.gz
[root@hadoop101 ~]# ls houge.txt
2 zip/unzip 压缩
1)基本语法
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
2)选项说明
3)经验技巧
zip 压缩命令在windows/linux都通用,可以压缩目录且保留源文件。
4)案例实操
(1)压缩 houge.txt 和bailongma.txt,压缩后的名称为mypackage.zip
[root@hadoop101 opt]# touch bailongma.txt
[root@hadoop101 ~]# zip mypackage.zip houge.txt bailongma.txt
adding: houge.txt (stored 0%)
adding: bailongma.txt (stored 0%)
[root@hadoop101 opt]# ls
houge.txt bailongma.txt mypackage.zip
(2)解压 mypackage.zip
[root@hadoop101 ~]# unzip mypackage.zip
Archive: houma.zip
extracting: houge.txt
extracting: bailongma.txt
[root@hadoop101 ~]# ls
houge.txt bailongma.txt mypackage.zip
(3)解压mypackage.zip到指定目录-d
[root@hadoop101 ~]# unzip mypackage.zip -d /opt
[root@hadoop101 ~]# ls /opt/
3 tar 打包
1)基本语法
tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的 文件格式.tar.gz)
2)选项说明
3)案例实操
(1)压缩多个文件
[root@hadoop101 opt]# tar -zcvf houma.tar.gz houge.txt bailongma.txt
houge.txt
bailongma.txt
[root@hadoop101 opt]# ls houma.tar.gz houge.txt bailongma.txt
(2)压缩目录
[root@hadoop101 ~]# tar -zcvf xiyou.tar.gz xiyou/
xiyou/
xiyou/mingjie/
xiyou/dssz/
xiyou/dssz/houge.txt
(3)解压到当前目录
[root@hadoop101 ~]# tar -zxvf houma.tar.gz
(4)解压到指定目录
[root@hadoop101 ~]# tar -zxvf xiyou.tar.gz -C /opt
[root@hadoop101 ~]# ll /opt/
9 磁盘查看和分区类
1 du 查看文件和目录占用的磁盘空间
du: disk usage 磁盘占用情况
1)基本语法
du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况)
2)选项说明
3)案例实操
(1)查看当前用户主目录占用的磁盘空间大小
[root@hadoop101 ~]# du -sh
166M .
2 df 查看磁盘空间使用情况
df: disk free 空余磁盘
1)基本语法
df 选项 (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占 用情况)
2)选项说明
3)案例实操
(1)查看磁盘使用情况
[root@hadoop101 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 3.5G 11G 26% /
tmpfs 939M 224K 939M 1% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
3 lsblk 查看设备挂载情况
1)基本语法
lsblk (功能描述:查看设备挂载情况)
2)选项说明
4 fdisk 分区
1)基本语法
fdisk -l (功能描述:查看磁盘分区详情)
fdisk 硬盘设备名 (功能描述:对新增硬盘进行分区操作)
2)选项说明
3)经验技巧
该命令必须在 root 用户下才能使用
4)功能说明
(1)Linux 分区
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型
(2)分区操作按键说明
m:显示命令列表
p:显示当前磁盘分区
n:新增分区
w:写入分区信息并退出
q:不保存分区信息直接退出
5)案例实操
(1)查看系统分区情况
[root@hadoop101 /]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005e654
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 1332 10485760 83 Linux
/dev/sda3 1332 1593 2097152 82 Linux swap / Solaris
添加硬盘例子
1、查看未添加硬盘时的磁盘分区信息
[root@hadoop100 ~]# fdisk -l #查看磁盘分区详情
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000dd0a7
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux #这个 * 表示是否是引导分区
/dev/sda2 2099200 10487807 4194304 82 Linux swap / Solaris
/dev/sda3 10487808 62914559 26213376 83 Linux
[root@hadoop100 ~]#
2、向Linux添加一块硬盘
3、使用 fdisk -l 或 lsblk -l 查看是否有新添加得那块硬盘(发现并没有)
[root@hadoop100 ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000dd0a7
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 10487807 4194304 82 Linux swap / Solaris
/dev/sda3 10487808 62914559 26213376 83 Linux
[root@hadoop100 ~]# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 4G 0 part [SWAP]
sda3 8:3 0 25G 0 part /
sr0 11:0 1 4.4G 0 rom
[root@hadoop100 ~]#
4、重启系统()
注意: 硬盘不像光盘一样可以热启动
5、查看分区情况 lsblk 、fdisk -l
6、开始分区
[root@hadoop100 ~]# fdisk /dev/sdb # /dev/sdb 将分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x655c28f9 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n # n 开始分区
Partition type:
p primary (0 primary, 0 extended, 4 free) # p 表示主分区
e extended # e 表示逻辑分区
Select (default p): p # 设置主分区
分区号 (1-4,默认 1): # 这里输入分几个主分区 (默认是 1 )
起始 扇区 (2048-41943039,默认为 2048): # 输入分区的大小,不输入的话直接默认大小了
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):p # 输出分区的信息
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x655c28f9
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
命令(输入 m 获取帮助):w # 保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@hadoop100 ~]# fdisk -l # 查看分区信息(看到已经分区了)
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000dd0a7
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 10487807 4194304 82 Linux swap / Solaris
/dev/sda3 10487808 62914559 26213376 83 Linux
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x655c28f9
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
[root@hadoop100 ~]# lsblk # 查看分区信息(看到已经分区了)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 4G 0 part [SWAP]
└─sda3 8:3 0 25G 0 part /
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
sr0 11:0 1 1024M 0 rom
[root@hadoop100 ~]# lsblk -f # 查看文件系统信息(看到sdb并没有文件系统信息,因为并没有进行初始化,系统不是到用什么文件信息识别它)
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 62afc383-3572-43f9-b944-1a22032d0eed /boot
├─sda2 swap 1d7f674c-b1ac-45f5-8ed3-7f8eb2ef66d4 [SWAP]
└─sda3 xfs 75a0e300-9bbd-4e02-8bc2-42343694a0dc /
sdb
└─sdb1
sr0
[root@hadoop100 ~]#
Linux的分区解释
7、初始化硬盘
[root@hadoop100 ~]# mkfs -t xfs /dev/sdb1 # mkfs 初始化 -t 文件格式
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 62afc383-3572-43f9-b944-1a22032d0eed /boot
├─sda2 swap 1d7f674c-b1ac-45f5-8ed3-7f8eb2ef66d4 [SWAP]
└─sda3 xfs 75a0e300-9bbd-4e02-8bc2-42343694a0dc /
sdb
└─sdb1 xfs f2aba963-b7d6-4e0b-beab-4f5c2ada9c16
sr0
[root@hadoop100 ~]#
8、挂载
[root@hadoop100 ~]# mount /dev/sdb1 /home/string-int/ #将/dev/sdb1 挂载到/home/string-int/目录
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 62afc383-3572-43f9-b944-1a22032d0eed /boot
├─sda2 swap 1d7f674c-b1ac-45f5-8ed3-7f8eb2ef66d4 [SWAP]
└─sda3 xfs 75a0e300-9bbd-4e02-8bc2-42343694a0dc /
sdb
└─sdb1 xfs f2aba963-b7d6-4e0b-beab-4f5c2ada9c16 /home/string-int
sr0
[root@hadoop100 ~]#
9、查看硬盘占用空间
[root@hadoop100 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 13M 1.7G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/sda3 25G 4.9G 21G 20% /
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 350M 28K 350M 1% /run/user/0
/dev/sdb1 20G 33M 20G 1% /home/string-int
[root@hadoop100 ~]#
10、卸载硬盘挂载点
[root@hadoop100 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 13M 1.7G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/sda3 25G 4.9G 21G 20% /
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 350M 36K 350M 1% /run/user/0
/dev/sdb1 20G 33M 20G 1% /home/string-int
[root@hadoop100 ~]# umount /home/string-int #或者 umount /dev/sdb1 。/home/string-int是挂载点。/dev/sdb1是硬盘名字
[root@hadoop100 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.7G 0 1.7G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 13M 1.7G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/sda3 25G 4.9G 21G 20% /
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 350M 36K 350M 1% /run/user/0
[root@hadoop100 ~]#
[root@hadoop100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 62afc383-3572-43f9-b944-1a22032d0eed /boot
├─sda2 swap 1d7f674c-b1ac-45f5-8ed3-7f8eb2ef66d4 [SWAP]
└─sda3 xfs 75a0e300-9bbd-4e02-8bc2-42343694a0dc /
sdb
└─sdb1 xfs f2aba963-b7d6-4e0b-beab-4f5c2ada9c16
sr0
[root@hadoop100 ~]#
5 mount/umount 挂载/卸载
对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根 目录、一个独立且唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理 方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来, 要载入的那个分区将使它的存储空间在这个目录下获得。
1)挂载前准备(必须要有光盘或者已经连接镜像文件)
2)基本语法
mount [-t vfstype] [-o options] device dir (功能描述:挂载设备)
umount 设备文件名或挂载点 (功能描述:卸载设备)
3)参数说明
4)案例实操
(1)挂载光盘镜像文件
[root@hadoop101 ~]# mkdir /mnt/cdrom/ 建立挂载点
[root@hadoop101 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ 设备/dev/cdrom 挂载到 挂载点 : /mnt/cdrom 中
[root@hadoop101 ~]# ll /mnt/cdrom/
(2)卸载光盘镜像文件
[root@hadoop101 ~]# umount /mnt/cdrom
5)设置开机自动挂载
[root@hadoop101 ~]# vi /etc/fstab
添加红框中内容,保存退出。
10 进程管理类
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地 址空间,并占用一定的系统资源。
Linux 进程可以分为两大类:
1、前台显示的进程
2、后台运行的进程
[root@hadoop100 ~]# ls /usr/lib/systemd/system/ #所有的服务都放在了/usr/lib/systemd/system/目录下面,
守护进程是以 d.service 结尾的,守护系统服务的进程
.target 是一组服务的集合
1 ps 查看当前系统进程状态
ps:process status 进程状态
1)基本语法
ps aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
2)选项说明
发现有两种风格:
1、有 - 短横杠的 ——UNIX
2、无 - 短横杠的——BSD
3)功能说明
(1)ps aux 显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的 ID 号
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:
R:运行状态、
S:睡眠状态、
T:暂停状态、
Z:僵尸状态、
s:包含子进程、
l:多线程、
+:前台显示
START:该进程的启动时间
TIME:该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef 显示信息说明
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算, 执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
4)经验技巧
如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;
如果想查看进程的父进程 ID 可以使用 ef;
5)案例实操
[root@hadoop100 ~]# ps # 只输入 ps 显示的是非常有限的只显示当前用户的以及和当前终端相关联的进程
PID TTY TIME CMD
2022 pts/0 00:00:00 bash #远程登陆的进程
2136 pts/0 00:00:00 ps # ps命令执行的进程
[root@hadoop100 ~]#
[root@hadoop101 datas]# ps aux
[root@hadoop101 datas]# ps -ef
[root@hadoop100 ~]# ps -ef | less
2 kill 终止进程
1)基本语法
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这 在系统因负载过大而变得很慢时很有用)
2)选项说明
3)案例实操
(1)杀死浏览器进程
[root@hadoop101 桌面]# kill -9 5102
(2)通过进程名称杀死进程
[root@hadoop101 桌面]# killall firefox
3 pstree 查看进程树
1)基本语法
pstree [选项]
2)选项说明
3)案例实操
(1)显示进程 pid
[root@hadoop101 datas]# pstree -p
(2)显示进程所属用户
[root@hadoop101 datas]# pstree -u
4 top 实时监控系统进程状态
1)基本命令
top [选项]
2)选项说明
3) 操作说明
4)查询结果字段解释
第一行信息为任务队列信息
第二行为进程信息
第三行为 CPU 信息
第四行为物理内存信息
第五行为交换分区(swap)信息
5)案例实操
[root@hadoop101 atguigu]# top -d 1
[root@hadoop101 atguigu]# top -i
[root@hadoop101 atguigu]# top -p 2575
执行上述命令后,可以按 P、M、N 对查询出的进程结果进行排序。
5 netstat 显示网络状态和端口占用信息
1)基本语法
netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)
netstat –nlp | grep 端口号 (功能描述:查看网络端口号占用情况)
2)选项说明
3)案例实操
(1)通过进程号查看sshd进程的网络信息
[root@hadoop100 ~]# netstat -anp | less
[root@hadoop101 hadoop-2.7.2]# netstat -anp | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 951/sshd tcp 0 0 192.168.202.100:22 192.168.202.1:57741 ESTABLISHED 3380/sshd: root@pts tcp 0 52 192.168.202.100:22 192.168.202.1:57783 ESTABLISHED 3568/sshd: root@pts tcp 0 0 192.168.202.100:22 192.168.202.1:57679 ESTABLISHED 3142/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 951/sshd unix 2 [ ] DGRAM 39574 3568/sshd: root@pts unix 2 [ ] DGRAM 37452 3142/sshd: root@pts unix 2 [ ] DGRAM 48651 3380/sshd: root@pts unix 3 [ ] STREAM CONNECTED 21224 951/sshd
(2)查看某端口号是否被占用
[root@hadoop101 桌面]# netstat -nltp | grep 22
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
1324/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
951/sshd tcp6 0 0 :::22 :::* LISTEN
951/sshd
11 crontab 系统定时任务
1 crontab 服务管理
1)重新启动 crond 服务
[root@hadoop101 ~]# systemctl restart crond
[root@hadoop100 ~]# systemctl restart crond
[root@hadoop100 ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 五 2022-09-09 20:13:10 CST; 27s ago
Main PID: 4326 (crond)
Tasks: 1
CGroup: /system.slice/crond.service
└─4326 /usr/sbin/crond -n
9月 09 20:13:10 hadoop100 systemd[1]: Stopped Command Scheduler.
9月 09 20:13:10 hadoop100 systemd[1]: Started Command Scheduler.
9月 09 20:13:10 hadoop100 crond[4326]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 77% if used.)
9月 09 20:13:10 hadoop100 crond[4326]: (CRON) INFO (running with inotify support)
9月 09 20:13:10 hadoop100 crond[4326]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
[root@hadoop100 ~]#
2 crontab 定时任务设置
1)基本语法
crontab [选项]
2)选项说明
3)参数说明
[root@hadoop101 ~]# crontab -e
(1)进入 crontab 编辑界面。会打开 vim 编辑你的工作。
***** 执行的任务
(2)特殊符号
(3)特定时间执行命令
4)案例实操
(1)每隔 1 分钟,向/root/hello 文件中添加一个 hello, world字符串
[root@hadoop101 ~]# crontab -e
*/1 * * * * echo "hello, world" >> /root/hello # 每隔以分钟向/root/hello 文件里写入hello, world
[root@hadoop101 ~]# cat hello
hello, world
[root@hadoop101 ~]# tail -f hello
hello, world
[root@hadoop101 ~]# crontab -l
*/1 * * * * echo "hello, world" >> /root/hello
[root@hadoop101 ~]# crontab -r
[root@hadoop101 ~]# crontab -l
no crontab for root
[root@hadoop101 ~]#