yy
, 拷贝当前行向下的5行 5yy
,并粘贴(输入p)dd
, 删除当前行向下的5行 5dd
/关键字
, 回车查找 , 输入n
就是查找下一个 ]:set nu
和 :set nonu
]G
]和最首行[gg
]目标行数 + shift + g
u
shutdown -h now
:表示立即关机(-h
:halt关机)shutdown -h 1
:表示1分钟后关机shutdown -r now
:立即重启halt
:关机reboot
:重启sync
:把内存的数据同步到磁盘[tom@hadoop1 ~]$ sync
su - root
命令来切换成管理员身份[tom@hadoop1 ~]$ su - root
密码:
上一次登录:二 6月 22 16:56:42 CST 2021pts/0
[root@hadoop1 ~]#
logout
即可注销用户[root@hadoop1 ~]# logout
[tom@hadoop1 ~]$
[root@hadoop1 home]# logout
//之前从tom登陆到root,logout会退回到tom
[tom@hadoop1 ~]$ logout
Connection closing...Socket close.
Connection closed by foreign host.
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
用户管理操作:
添加用户:useradd 用户名
当创建用户tom成功后,会自动地创建和用户同名的家目录在home/tom
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# ls
tom
[root@hadoop1 home]# useradd cool
[root@hadoop1 home]# ls
cool tom
[root@hadoop1 home]#
也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
[root@hadoop1 home]# useradd -d /home/test jack
[root@hadoop1 home]# ls
cool test tom
指定/修改用户密码:passwd 用户名
[root@hadoop1 home]# passwd cool
更改用户 cool 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新
[cool@hadoop1 ~]$ pwd //pwd显示当前在哪个用户
/home/cool
删除用户:userdel 用户名
[cool@hadoop1 ~]$ userdel cool //不能自己删除自己
-bash: /usr/sbin/userdel: 权限不够
[root@hadoop1 ~]# userdel cool //刚刚登陆过,可能正在运行
userdel: user cool is currently used by process 10403
userdel 用户名
:删除用户,但是要保留家目录(一般情况下建议保留用户家目录)
[root@hadoop1 ~]# userdel cool
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# ls
cool test tom
userdel -r cool
:删除用户以及用户主目录(注意使用)
[root@hadoop1 home]# userdel -r jack
[root@hadoop1 home]# ls
cool tom
查询用户信息:id 用户名
[root@hadoop1 home]# id root
uid=0(root) gid=0(root) 组=0(root)
[root@hadoop1 home]# id cool
id: cool: no such user
[root@hadoop1 home]# id tom
uid=1000(tom) gid=1000(tom) 组=1000(tom)
切换用户:su -用户名
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
[root@hadoop1 home]# su - tom
上一次登录:二 6月 22 16:56:06 CST 2021从 192.168.176.1pts/0
[tom@hadoop1 ~]$ su - root
密码:
上一次登录:二 6月 22 17:18:31 CST 2021从 192.168.176.1pts/0
[root@hadoop1 ~]#
当需要返回到原来用户时,使用exit指令
[root@hadoop1 ~]# exit
登出
[tom@hadoop1 ~]$
查看当前用户/登陆用户:who am i
(第一次登陆时使用的用户)
[tom@hadoop1 ~]$ who an i
root pts/0 2021-06-22 17:18 (192.168.176.1)//登陆时间
[root@hadoop1 ~]# who am i
root pts/0 2021-06-22 17:18 (192.168.176.1)
[root@hadoop1 ~]#
用户组:类似于角色,系统可以对有共性的多个用户进行统一的管理
添加组:groupadd 组名
[root@hadoop1 ~]# groupadd wudang
删除组:groupdel 组名
[root@hadoop1 ~]# groupdel wudang
增加用户时直接为其指定一个组:useradd -g 组名 用户名
[root@hadoop1 ~]# useradd -g wudang jack
[root@hadoop1 ~]# id jack
uid=1001(jack) gid=1001(wudang) 组=1001(wudang)
如果没有指定,会默认的创建一个与用户同名的组,将该用户放入
[root@hadoop1 ~]# id tom
uid=1000(tom) gid=1000(tom) 组=1000(tom)
修改用户的组:usermod -g 组名 用户名
[root@hadoop1 ~]# groupadd shaolin
[root@hadoop1 ~]# usermod -g shaolin jack
[root@hadoop1 ~]# id jack
uid=1001(jack) gid=1002(shaolin) 组=1002(shaolin)
用户和组相关文件:
/etc/passwd 文件
/etc/shadow 文件
口令的配置文件
每行的含义: 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警
告时间:不活动时间:失效时间:标志
[root@hadoop1 home]# vim /etc/shadow
/etc/group 文件
运行级别说明:
切换级别的指令:
[root@hadoop1 ~]# init 3
[root@hadoop1 ~]# init 5
常用运行级别是3和5 ,如果要修改默认的运行级别,可改文件设置
在centOS7之前,修改/ect/inittab文件中的配置,centOS7后进行了简化:
multi-user.target
:analogous to runlevel 3
graphical.target
:analogous to runlevel 5
使用命令查看当前默认运行级别:
[root@hadoop1 home]# systemctl get-default
graphical.target
使用命令设置运行级别:
[root@hadoop1 home]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@hadoop1 home]# systemctl get-default
multi-user.target
此时再重启会自动进入多用户级别:3
e
”进入编辑界面init=/bin/sh
mount -o remount,rw /
(注意:各个单词间有空格),完成后按键盘的回车键(Enter)passwd
, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(提示:密码长度最好8位以上,但不是必须的),密码修改成功后,会显示passwd…的样式,说明密码修改成功touch /.autorelabel
(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)exec /sbin/init
(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(提示:这个过程时间可能有点长,耐心等待),完成后,系统会自动重启,新的密码生效当对某个指令不熟悉时,可以使用Linux提供的帮助指令来了解这个指令的使用方法
man:获得帮助信息
语法:man [命令或配置文件]
[root@hadoop1 ~]# man ls
- Linux下,隐藏文件是以 . 开头的
- 命令的选项可以组合使用,如:ls -al → \to → ls -al /root
help指令:或的shell内置命令的帮助信息
语法:help 命令
[root@hadoop1 ~]# help cd
pwd 指令(print working directory)
pwd
ls指令(list)
ls [选项] [目录或是文件]
cd指令(change directory)
基本语法:cd [参数]
功能描述:切换到指定目录
常用参数:
cd ~
或 cd :
回到自己的家目录
cd ..
回到当前目录的上一级目
[root@hadoop1 tom]# who am i
root pts/0 2021-06-25 19:17 (192.168.176.1)
[root@hadoop1 tom]# cd~
bash: cd~: 未找到命令...//有空格
[root@hadoop1 tom]# cd ~
[root@hadoop1 ~]#
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# cd tom
[root@hadoop1 tom]# cd ..
[root@hadoop1 home]#
也可以直接使用路径切换目录
//使用绝对路径
[root@hadoop1 ~]# cd /home/tom
[root@hadoop1 tom]# cd /root
[root@hadoop1 ~]#
//使用相对路径
[root@hadoop1 ~]# cd /home/tom
[root@hadoop1 tom]# cd ../../root
[root@hadoop1 ~]#
mkdir指令(make directories)
基本语法:mkdir [选项] 要创建的目录
功能描述:用于创建目录
[root@hadoop1 ~]# mkdir /home/dog
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# ls
cool dog jack tom
常用选项:
-p 创建多级目录
[root@hadoop1 home]# mkdir /home/animal/cat
mkdir: 无法创建目录"/home/animal/cat": 没有那个文件或目录
//mkdir无法创建多级目录
[root@hadoop1 home]# mkdir -p /home/animal/cat
[root@hadoop1 home]# ls
animal cool dog jack tom
[root@hadoop1 home]# cd animal
[root@hadoop1 animal]# ls
cat
rmdir指令
基本语法:rmdir [选项] 要删除的空目录
功能描述:删除空目录
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# rmdir /home/dog
[root@hadoop1 home]# ls
animal cool jack tom
[root@hadoop1 home]# rmdir animal
rmdir: 删除 "animal" 失败: 目录非空//注意:只能删除非空目录
rm -rf 要删除的非空目录
删除非空目录
[root@hadoop1 home]# rm -rf animal
[root@hadoop1 home]# ls
cool jack tom
touch指令
touch 文件名
cp指令
基本语法:cp [选项] source dest
功能描述:拷贝文件到指定目录
//将 /home/aaa.txt 拷贝到 /home/bbb 目录下
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# touch aaa.txt
[root@hadoop1 home]# ls
aaa.txt cool jack tom
[root@hadoop1 home]# mkdir bbb
[root@hadoop1 home]# ls
aaa.txt bbb cool jack tom
[root@hadoop1 home]# cp aaa.txt bbb
[root@hadoop1 home]# cd bbb
[root@hadoop1 bbb]# ls
aaa.txt
常用选项 -r :递归复制整个文件夹
//递归复制 /home/bbb整个文件夹到/pot下
[root@hadoop1 home]# cp -r /home/bbb /opt
[root@hadoop1 home]# cd ..
[root@hadoop1 /]# cd /opt
[root@hadoop1 opt]# ls
bbb rh VMwareTools-10.3.10-13959562.tar.gz vmware-tools-distrib
[root@hadoop1 opt]# cd bbb
[root@hadoop1 bbb]# ls
aaa.txt
如果复制到的目标文件夹内有同名的文件,如果默认执行覆盖文件操作怎么办
[root@hadoop1 home]# vim aaa.txt
[root@hadoop1 home]# cp aaa.txt bbb
cp:是否覆盖"bbb/aaa.txt"? y//每次都要确认覆盖操作
[root@hadoop1 home]# \cp aaa.txt bbb//默认覆盖
rm指令
rm [选项] 要删除的文件或目录
mv指令
基本语法、功能描述:
mv oldNameFile newNameFile
(功能描述:重命名)
mv /temp/movefile /targetFolder
(功能描述:移动文件) = 剪切
//移动整个目录
[root@hadoop1 home]# ls
aaa.txt bbb ccc.txt cool jack tom
[root@hadoop1 home]# rm -rf bbb
[root@hadoop1 home]# ls
aaa.txt ccc.txt cool jack tom
[root@hadoop1 home]# cd /opt
[root@hadoop1 opt]# mv bbb /home
[root@hadoop1 opt]# ls
rh VMwareTools-10.3.10-13959562.tar.gz vmware-tools-distrib
[root@hadoop1 opt]# cd /home
[root@hadoop1 home]# ls
aaa.txt bbb ccc.txt cool jack tom
cat指令(concatenate)
基本语法:cat [选项] 要查看的文件
功能描述:查看文件内容
常用选项:-n 显示行号
[root@hadoop1 home]# cat -n aaa.txt
1 hello
cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | 其他指令
more指令
less指令
基本语法:less 要查看的文件
功能描述:用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。 less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容, 对于显示大型文件具有较高的效率
内置的若干快捷键:
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页; |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页; |
/字串 | 向下搜寻『字串』 的功能; n:向下查找; N:向上查找; |
?字串 | 向上搜寻『字串』 的功能; n:向上查找; N:向下查找; |
q | 离开 less 这个程序; |
echo指令
基本语法:echo [选项] [输出内容]
功能描述:输出内容到控制台
//使用echo 指令输出环境变量
[root@hadoop1 home]# echo $HOSTNAME
hadoop1
//使用echo 指令输出 hello,world!
[root@hadoop1 home]# echo "hello world"
hello world
head指令
基本语法、功能描述:
head 文件(功能描述:查看文件头10行内容)
head -n 5 文件(功能描述:查看文件头5行内容, 5可以是任意行数)
[root@hadoop1 home]# head -n 5 /etc/profile
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
tail指令
基本语法、功能描述:
tail 文件
(功能描述:查看文件头10行内容)
tail -n 5 文件
(功能描述:查看文件头5行内容, 5可以是任意行数)
tail -f 文件
(功能描述:实时追踪该文档的所有更新)
[root@hadoop1 home]# tail -f aaa.txt
hello
tail: aaa.txt:文件已截断
hello,world
> 指令 和 >> 指令
基本语法、功能描述:
ls -l >文件
(功能描述:列表的内容写入文件a.txt中(覆盖写))ls -al >>文件
(功能描述:列表的内容追加到文件aa.txt的末尾)cat 文件1 > 文件2
(功能描述:将文件1的内容覆盖到文件2)echo "内容">> 文件
应用案例:
//将 /home 目录下的文件列表 写入到 /home/info.txt 中
[root@hadoop1 home]# ls -l /home > /home/homeinfo.txt
[root@hadoop1 home]# ls
aaa.txt bbb ccc.txt cool homeinfo.txt jack tom
[root@hadoop1 home]# cat homeinfo.txt
总用量 20
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
drwxr-xr-x. 2 root root 4096 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4096 6月 22 17:17 cool
-rw-r--r--. 1 root root 0 6月 25 22:20 homeinfo.txt
drwx------. 3 jack shaolin 4096 6月 22 17:54 jack
drwx------. 15 tom tom 4096 6月 25 19:19 tom
//1.使用 > 覆盖
[root@hadoop1 home]# ls -l /home > /home/homeinfo.txt
[root@hadoop1 home]# cat homeinfo.txt
总用量 20
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
drwxr-xr-x. 2 root root 4096 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4096 6月 22 17:17 cool
-rw-r--r--. 1 root root 0 6月 25 22:20 homeinfo.txt
drwx------. 3 jack shaolin 4096 6月 22 17:54 jack
drwx------. 15 tom tom 4096 6月 25 19:19 tom
//2.使用 >> 追加
[root@hadoop1 home]# ls -l /home >> /home/homeinfo.txt
[root@hadoop1 home]# cat homeinfo.txt
总用量 20
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
drwxr-xr-x. 2 root root 4096 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4096 6月 22 17:17 cool
-rw-r--r--. 1 root root 0 6月 25 22:20 homeinfo.txt
drwx------. 3 jack shaolin 4096 6月 22 17:54 jack
drwx------. 15 tom tom 4096 6月 25 19:19 tom
总用量 24
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
drwxr-xr-x. 2 root root 4096 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4096 6月 22 17:17 cool
-rw-r--r--. 1 root root 396 6月 25 22:20 homeinfo.txt
drwx------. 3 jack shaolin 4096 6月 22 17:54 jack
drwx------. 15 tom tom 4096 6月 25 19:19 tom
//将当前日历信息 追加到 /home/mycal 文件中
[root@hadoop1 home]# cal >> /home/mycal.txt
[root@hadoop1 home]# cat mycal.txt
六月 2021
日 一 二 三 四 五 六
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
[root@hadoop1 home]# cal >> /home/mycal.txt
[root@hadoop1 home]# cat mycal.txt
六月 2021
日 一 二 三 四 五 六
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
六月 2021
日 一 二 三 四 五 六
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
ln 指令
基本语法、功能描述:
ln -s [原文件或目录] [软链接名]
(功能描述:给原文件创建一个软链接)=快捷方式
应用实例 :
//在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录
[root@hadoop1 home]# ln -s /root/ /home/myroot
//访问myroot就是root目录
[root@hadoop1 home]# cd myroot
[root@hadoop1 myroot]# ls
anaconda-ks.cfg hello.java initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
//删除软链接
[root@hadoop1 myroot]# rm /home/myroot
rm:是否删除符号链接 "/home/myroot"?y
history指令
基本语法、功能描述:
history(功能描述:查看已经执行过历史命令)
显示最近使用过的10个指令
[root@hadoop1 home]# history 5
208 cd ..
209 cd /home
210 ll
211 history
212 history 5
执行指定历史编号为210的指令
[root@hadoop1 home]# !210
ll
总用量 28
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
drwxr-xr-x. 2 root root 4096 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4096 6月 22 17:17 cool
date指令-显示当前日期
基本语法、功能描述:
date
(功能描述:显示当前时间)date +%Y
(功能描述:显示当前年份)date +%m
(功能描述:显示当前月份)date +%d
(功能描述:显示当前是哪一天)date "+%Y-%m-%d %H:%M:%S"
(功能描述:显示年月日时分秒)应用实例:
案例1:显示当前时间信息
[root@hadoop1 home]# date
2021年 06月 25日 星期五 23:06:37 CST
案例2:显示当前时间年月日
[root@hadoop1 home]# date "+%Y-%m-%d"
2021-06-25
案例3:显示当前时间年月日时分秒
[root@hadoop1 home]# date "+%Y-%m-%d %H:%M:%S"
2021-06-25 23:08:13
date指令-设置日期
基本语法:date -s
字符串时间
应用实例:设置当前时间
[root@hadoop1 home]# date -s "2021-06-25 23:08:13"
2021年 06月 25日 星期五 23:08:13 CST
[root@hadoop1 home]# date
2021年 06月 25日 星期五 23:08:23 CST
cal指令
find指令
基本语法:find [搜索范围] [选项]
功能描述:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
选项说明:
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件(+n 大于 -n小于 n 等于) |
案例应用:
案例一:根据名称查找/home 目录下的hello.txt文件
[root@hadoop1 LiveOS]# find /home -name aaa.txt
/home/aaa.txt
/home/bbb/aaa.txt
案例二:按拥有者:查找/opt目录下,用户名称为 nobody的文件
[root@hadoop1 LiveOS]# find /opt -user root
案例3: 查找整个linux系统下大于200m的文件(+n 大于 -n小于 n等于)
[root@hadoop1 home]# find / -size +200M
/proc/kcore
find: ‘/proc/12894/task/12894/fd/5’: 没有那个文件或目录
find: ‘/proc/12894/task/12894/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/12894/fd/6’: 没有那个文件或目录
find: ‘/proc/12894/fdinfo/6’: 没有那个文件或目录
/run/media/root/CentOS 7 x86_64/LiveOS/squashfs.img
[root@hadoop1 root]# cd /run/media/root/CentOS\ 7\ x86_64/LiveOS/
[root@hadoop1 LiveOS]# ls -l
总用量 442741
-rw-r--r--. 1 root root 453365760 11月 26 2018 squashfs.img
-r--r--r--. 1 root root 224 11月 26 2018 TRANS.TBL
//453365760不适合阅读,加-lh,这里h是humam,更人性化
[root@hadoop1 LiveOS]# ls -lh
总用量 433M
-rw-r--r--. 1 root root 433M 11月 26 2018 squashfs.img
-r--r--r--. 1 root root 224 11月 26 2018 TRANS.TBL
locate指令
基本语法:locate 搜索文件
功能描述:可以快速定位文件路径。 locate指令利用事先建立的系统中所有文件名称及路径
的locate数据库实现快速定位给定的文件。 Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
应用案例:
//使用locate 指令快速定位 hello.txt 文件所在目录
[root@hadoop1 LiveOS]# updatedb
[root@hadoop1 LiveOS]# locate aaa.txt
/home/aaa.txt
/home/bbb/aaa.txt
which指令
基本语法:which 指令名
功能描述:查看某个指令在那个目录下
[root@hadoop1 LiveOS]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
grep指令和 管道符号 |
基本语法:grep [选项] 查找内容 源文件
功能描述:过滤查找 , 管道符, “|”,表示将前一个命令的处理结果输出传递给后面的命令处理
常用选项:
选项 | 功能 |
---|---|
-n | 显示匹配行及行号。 |
-i | 忽略字母大小写 |
应用实例:
//请在 hello.txt 文件中,查找 "yes" 所在行,并且显示行号
//写法1:
[root@hadoop1 home]# cat /home/a.txt | grep "yes"
yes
yes
yes
[root@hadoop1 home]# cat /home/a.txt | grep -n "yes"
2:yes
4:yes
5:yes
//写法2:
[root@hadoop1 home]# grep -n "yes" /home/a.txt
2:yes
4:yes
5:yes
gzip/gunzip 指令
基本语法、功能描述:
gzip 文件
(功能描述:压缩文件,只能将文件压缩为.gz文件*)gunzip 文件.gz
(功能描述:解压缩文件命令)应用实例:
//压缩
[root@hadoop1 home]# gzip a.txt
[root@hadoop1 home]# ls
aaa.txt a.txt.gz bbb ccc.txt cool homeinfo.txt jack mycal.txt tom
//解压
[root@hadoop1 home]# gunzip a.txt.gz
[root@hadoop1 home]# ls
aaa.txt a.txt bbb ccc.txt cool homeinfo.txt jack mycal.txt tom
zip/unzip 指令
基本语法、功能描述:
zip [选项] XXX.zip 将要压缩的内容
(功能描述:压缩文件和目录的命令)unzip [选项] XXX.zip
(功能描述:解压缩文件)zip常用选项
-r:递归压缩,即压缩目录
unzip的常用选项
-d<目录> : 指定解压后文件的存放目录
应用实例:
//将 /home下的 所有文件进行压缩成 mypackage.zip
[root@hadoop1 home]# zip -r myhome.zip /home
[root@hadoop1 home]# ls
aaa.txt a.txt bbb ccc.txt cool homeinfo.txt jack mycal.txt myhome.zip tom
//将 mypackge.zip 解压到 /opt/tmp 目录下
[root@hadoop1 home]# mkdir /opt/tmp
[root@hadoop1 home]# unzip -d /opt/tmp /home/myhome.zip
[root@hadoop1 home]# cd /opt/tmp/
[root@hadoop1 tmp]# ls
home
tar 指令
基本语法、功能描述:
tar [选项] XXX.tar.gz 打包的内容
(功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明:
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
应用实例:
//压缩多个文件,将 /home/a.txt 和 /home/aaa.txt 压缩成 mya.tar.gz
[root@hadoop1 home]# tar -zcvf mya.tar.gz /home/a.txt /home/aaa.txt
tar: 从成员名中删除开头的“/”
/home/a.txt
/home/aaa.txt
[root@hadoop1 home]# ls
aaa.txt a.txt bbb ccc.txt cool homeinfo.txt jack mya.tar.gz mycal.txt myhome.zip tom
//将 mya.tar.gz 解压到/opt/tmp
[root@hadoop1 tmp]# tar -zxvf /home/mya.tar.gz -C /opt/tmp
Linux组基本介绍
文件/目录 所有者
查看文件的所有者:ls -ahl
[root@hadoop1 home]# ls -ahl
总用量 900K
drwxr-xr-x. 6 root root 4.0K 6月 26 00:27 .
dr-xr-xr-x. 18 root root 4.0K 6月 25 20:02 ..
-rw-r--r--. 1 root root 12 6月 25 22:13 aaa.txt
-rw-r--r--. 1 root root 27 6月 26 00:09 a.txt
drwxr-xr-x. 2 root root 4.0K 6月 25 20:07 bbb
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
drwx------. 5 jack wudang 4.0K 6月 22 17:17 cool
-rw-r--r--. 1 root root 792 6月 25 22:21 homeinfo.txt
drwx------. 3 jack shaolin 4.0K 6月 22 17:54 jack
修改文件所有者:chown 用户名 文件名
[root@hadoop1 home]# touch c.txt
[root@hadoop1 home]# ll
-rw-r--r--. 1 root root 0 6月 26 15:33 c.txt
[root@hadoop1 home]# chown tom c.txt
[root@hadoop1 home]# ll
-rw-r--r--. 1 tom root 0 6月 26 15:33 c.txt
组的创建
基本语法:groupadd 组名
应用实例:
[root@hadoop1 home]# groupadd monster
[root@hadoop1 home]# useradd -g monster fox
[root@hadoop1 home]# id fox
uid=1002(fox) gid=1003(monster) 组=1003(monster)
文件/目录 所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
查看文件/目录所在组ls –ahl
[fox@hadoop1 ~]$ pwd
/home/fox
[fox@hadoop1 ~]$ touch ok.txt
[fox@hadoop1 ~]$ ll
总用量 0
-rw-r--r--. 1 fox monster 0 6月 28 23:22 ok.txt
//ok.txt文件所有者是fox,所在的组就是fox所在的monster
//或使用ls –ahl查看
[fox@hadoop1 ~]$ ls -ahl
总用量 36K
drwx------. 5 fox monster 4.0K 6月 28 23:22 .
drwxr-xr-x. 7 root root 4.0K 6月 28 23:18 ..
-rw-r--r--. 1 fox monster 0 6月 28 23:22 ok.txt
修改文件所在的组chgrp 组名 文件名
[root@hadoop1 ~]# cd /home
[root@hadoop1 home]# ll
总用量 896
-rw-r--r--. 1 root root 0 6月 25 20:06 ccc.txt
[root@hadoop1 home]# chgrp monster ccc.txt
[root@hadoop1 home]# ll
总用量 896
-rw-r--r--. 1 root monster 0 6月 25 20:06 ccc.txt
其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组
基本语法:
usermod –g
组名 用户名
usermod –d
目录名 用户名 改变该用户登陆的初始目录
(特别说明:用户需要有进入到新目录的权限)
应用实例:
[root@hadoop1 home]# id jack
uid=1001(jack) gid=1002(shaolin) 组=1002(shaolin)
//此时jack在shaolin组,现在要改到tom组
//先查查有没有tom组
[root@hadoop1 home]# cat /etc/group | grep tom
tom:x:1000:tom
[root@hadoop1 home]# usermod -g tom jack
[root@hadoop1 home]# ll
总用量 896
drwx------. 3 jack tom 4096 6月 22 17:54 jack
ls -l 中显示的内容如下:
-rw-r--r--. 1 root root 27 6月 26 00:09 a.txt
基本介绍:0-9位说明
rwx权限详解
rwx作用到文件
r:代表可读(read):可以读取,查看
w:代表可写(write):可以修改
注意:不代表可以删除该文件删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
x:代表可执行(execute):可以被执行
rwx作用到目录
举例:
修改权限-chmod
第一种方式: + 、 -、 = 变更权限
u:所有者, g:所有组, o:其他人, a:所有人(u、 g、 o的总和)
基本语法:
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名
应用案例:
//给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
[root@hadoop1 home]# chmod u=rwx,g=rx,o=rx a.txt
[root@hadoop1 home]# ll
-rwxr-xr-x. 1 root root 27 6月 26 00:09 a.txt
//给abc文件的所有者除去执行的权限,增加组写的权限
[root@hadoop1 home]# chmod u-x,g+w a.txt
[root@hadoop1 home]# ll
-rw-rwxr-x. 1 root root 27 6月 26 00:09 a.txt
//给abc文件的所有用户添加读的权限
[root@hadoop1 home]# chmod a+r a.txt
[root@hadoop1 home]# ll
-rw-rwxr-x. 1 root root 27 6月 26 00:09 a.txt
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
= chmod 751 文件目录名
应用实例:
[root@hadoop1 home]# chmod 755 a.txt
[root@hadoop1 home]# ll
-rwxr-xr-x. 1 root root 27 6月 26 00:09 a.txt
修改文件/目录所有者-chown
chown 新所有者 文件名/目录
改变文件的所有者chown 新所有者:新所有组 文件名/目录
改变用户的所有者和所有组chown -R 新所有者 目录
将目录中的所有文件都改成新所有者修改文件/目录所在组-chgrp
chgrp 新所有者 文件名/目录
改变文件的所有组
crond 任务调度概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:
基本语法 :crontab [选项]
常用选项:
选项 | 功能描述 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
service crond restart | 重启任务调度 |
应用实例:
[root@hadoop1 home]# ls
aaa.txt a.txt bbb ccc.txt cool c.txt fox homeinfo.txt jack mya.tar.gz mycal.txt myhome.zip tom
[root@hadoop1 home]# crontab -e
//输入*/1 * * * * ls -l /etc/ > /home/crontabtest.txt
//每一分钟,将etc中的内容,重定向到文件crontabtest.txt中
no crontab for root - using an empty one
crontab: installing new crontab
[root@hadoop1 home]# ll
-rw-r--r--. 1 root root 0 6月 29 16:20 crontabtest.txt
[root@hadoop1 home]# rm crontabtest.txt //删除文件后
rm:是否删除普通空文件 "crontabtest.txt"?y
您在 /var/spool/mail/root 中有邮件
[root@hadoop1 home]# ll //一分钟后再次生成
-rw-r--r--. 1 root root 0 6月 29 16:21 crontabtest.txt
*/1 * * * * ls -l /etc/ > /home/crontabtest.txt
:细节参数说明
5个占位符的说明
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。 比如第一个“*”就代表一小时中每分钟都执行一 次的意思。 |
, | 代表不连续的时间。 比如“0 8,12,16 * * * 命令”, 就代表在每天 的8点0分, 12点0分, 16点0分都执行一次命令 |
- | 代表连续的时间范围。 比如“0 5 * * 1-6命令”, 代表在周一到周 六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。 比如“*/10 * * * * 命令”, 代表每隔 10分钟就执行一遍命令 |
特定时间执行任务案例
时间 | 含义 |
---|---|
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 每周一的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4:00开始到4:50, 每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号, 每周1的0点0分都会执行命令。 |
注意:星期几和几号最好不要同时出现, 因为他们定义的都是天。 非常容易让管理员混乱
//案例:每天凌晨2:00 将mysql数据库 testdb ,备份到文件中
1. crontab -e
2. 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
使用脚本应用案例:
每隔1分钟, 将当前日期和日历都追加到 /home/mycal 文件中
编写脚本
[root@hadoop1 home]# vim myshell.sh
//date >> /home/mycal
//cal >> /home/mycal
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 home]# ll
-rw-r--r--. 1 root root 39 7月 2 09:03 myshell.sh
给root用户赋予执行脚本文件的权限
[root@hadoop1 home]# chmod u+x myshell.sh
[root@hadoop1 home]# ll
-rwxr--r--. 1 root root 39 7月 2 09:03 myshell.sh
执行脚本
[root@hadoop1 home]# ./myshell.sh
[root@hadoop1 home]# ll
-rw-r--r--. 1 root root 200 7月 2 09:05 mycal
-rwxr--r--. 1 root root 39 7月 2 09:03 myshell.sh
[root@hadoop1 home]# cat mycal
2021年 07月 02日 星期五 09:05:54 CST
七月 2021
日 一 二 三 四 五 六
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
使用crond定时执行脚本
[root@hadoop1 home]# crontab -l
//查看当前crond任务
*/1 * * * * le -l /etc/ > /home/crontabtest.txt
[root@hadoop1 home]# crontab -e
//编辑新的crond任务
crontab: installing new crontab
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 home]# crontab -l
*/1 * * * * le -l /etc/ > /home/crontabtest.txt
*/1 * * * * /home/myshell.sh
[root@hadoop1 home]# cat mycal
2021年 07月 02日 星期五 09:05:54 CST
七月 2021
日 一 二 三 四 五 六
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
[root@hadoop1 home]# cat mycal
//时间过了一分钟,文件内容有更新
2021年 07月 02日 星期五 09:05:54 CST
七月 2021
日 一 二 三 四 五 六
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
2021年 07月 02日 星期五 09:16:02 CST
七月 2021
日 一 二 三 四 五 六
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
概述:
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列
默认情况下,60秒检查一次作业队列(有作业是,会检查作业运行时间,如果时间与当前时间不匹配,则运行此作业)
at命令是一次性的,执行完就不再执行了
在使用at命令前,一定要保证atd进程的启动,可以使用指令来查看
ps -ef | grep atd
[root@hadoop1 home]# ps -ef | grep atd
root 7775 1 0 08:53 ? 00:00:00 /usr/sbin/atd -f
root 11324 9658 0 10:05 pts/0 00:00:00 grep --color=auto atd
原理图:
基本语法:
at [选项] [时间]
Ctrl + D 结束at命令的输入
选项
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件 |
-I | atq的别名 |
-d | atm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务内容到标准输出 |
-V | 显示版本信息 |
-q <队列> | 使用指定队列 |
时间的定义:
应用案例:
[root@hadoop1 ~]# at 5pm + 2 days
at> /bin/ls /home<EOT> //输入两次ctrl+d 退出编辑
job 3 at Sun Jul 4 17:00:00 2021
[root@hadoop1 ~]# atq
//atq查看当前还未执行的job
3 Sun Jul 4 17:00:00 2021 a root
[root@hadoop1 ~]# at 5pm tomorrow //明天下午5点执行
at> date > /root/date100.log<EOT>
job 6 at Sat Jul 3 17:00:00 2021
[root@hadoop1 ~]# atq
6 Sat Jul 3 17:00:00 2021 a root
3 Sun Jul 4 17:00:00 2021 a root
[root@hadoop1 ~]# atrm 3
//atrm 编号 :删除指定作业
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 ~]# atq
6 Sat Jul 3 17:00:00 2021 a root
Linux分区
原理介绍:
原理图:
硬盘说明:
hdx~
”,其中“hd”表明分区所在设备的类型,这里是指sdx~
”, SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样查看所有设备挂载情况
lsblk
[root@hadoop1 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot├─sda2 8:2 0 2G 0 part [SWAP]└─sda3 8:3 0 17G 0 part /sr0 11:0 1 1024M 0 rom
lsblk -f
[root@hadoop1 ~]# lsblk -f //FSTYPE LABEL:文件系统基本类型 //UUID:每个分区40位的唯一标识符 //MOUNTPOINT:挂载点 NAME FSTYPE LABEL UUID MOUNTPOINTsda //分区情况 ├─sda1 ext4 2b4b1a15-338f-4f48-9f1b-f452554cd50b /boot├─sda2 swap 7a814b32-ba6d-4ece-8bd4-22616bb801f1 [SWAP]└─sda3 ext4 bd3d6bdf-9bbf-4610-bda0-4dea8e07c746 /sr0
挂载的经典案例
说明:下面我们以增加一块硬盘为例来熟悉下磁盘的相关指令和深入理解磁盘分区、挂
载、卸载的概念
如何增加一块硬盘?
虚拟机添加硬盘
虚拟机设置 → \to →添加 → \to →硬盘 → \to →设置1GB → \to →使用SCSI硬盘
[root@hadoop1 home]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk //新的硬盘已经添加
sr0 11:0 1 1024M 0 rom
分区
分区命令:fdisk /dev/sdb
——所有的设备都在dev文件夹下
分区:
[root@hadoop1 home]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3f7d1ba5 创建新的 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 //new一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //主分区
分区号 (1-4,默认 1):1 //只分一个分区
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
将使用默认值 2097151
分区 1 已设置为 Linux 类型,大小设为 1023 MiB
命令(输入 m 获取帮助):w //写入修改并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 home]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1023M 0 part //此时分区已经修改
sr0 11:0 1 1024M 0 rom
格式化:指定基本类型
分区命令:mkfs -t ext4 /dev/sdb1
格式化:
[root@hadoop1 home]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 home]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2b4b1a15-338f-4f48-9f1b-f452554cd50b /boot
├─sda2 swap 7a814b32-ba6d-4ece-8bd4-22616bb801f1 [SWAP]
└─sda3 ext4 bd3d6bdf-9bbf-4610-bda0-4dea8e07c746 /
sdb
└─sdb1 ext4 16cb3e86-1eeb-4098-8dbd-93062a045f81 //格式化完成
挂载
先创建一个/newdisk目录
挂载:mount /dev/sdb1 /newdisk/
[root@hadoop1 /]# mkdir newdisk
[root@hadoop1 /]# mount /dev/sdb1 /newdisk/
[root@hadoop1 /]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2b4b1a15-338f-4f48-9f1b-f452554cd50b /boot
├─sda2 swap 7a814b32-ba6d-4ece-8bd4-22616bb801f1 [SWAP]
└─sda3 ext4 bd3d6bdf-9bbf-4610-bda0-4dea8e07c746 /
sdb
└─sdb1 ext4 16cb3e86-1eeb-4098-8dbd-93062a045f81 /newdisk
//此时已经有了挂载点了
sr0
卸载设备:
umount /dev/sdb1
设备名称
//先退回根目录
[root@hadoop1 /]# umount /dev/sdb1
[root@hadoop1 /]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 2b4b1a15-338f-4f48-9f1b-f452554cd50b /boot
├─sda2 swap 7a814b32-ba6d-4ece-8bd4-22616bb801f1 [SWAP]
└─sda3 ext4 bd3d6bdf-9bbf-4610-bda0-4dea8e07c746 /
sdb
└─sdb1 ext4 16cb3e86-1eeb-4098-8dbd-93062a045f81 //此时挂载点已经没有了
sr0
umount /newdisk
挂载目录
注意:用命令行挂载重启后会失效
永久挂载:通过修改/etc/fstab实现挂载
//vim /etc/fstab
添加完成后 执行mount –a 即刻生效
再重启后,挂载点依然生效
磁盘情况查询
查询系统整体磁盘使用情况
基本语法:df -h
应用实例:
[root@hadoop1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 17G 5.5G 11G 35% /
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 981M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 991M 2.6M 922M 1% /newdisk
/dev/sda1 976M 134M 776M 15% /boot
.host:/ 316G 24G 293G 8% /mnt/hgfs
//共享文件夹
tmpfs 199M 8.0K 199M 1% /run/user/42
tmpfs 199M 0 199M 0% /run/user/0
查询指定目录的磁盘占用情况
基本语法:du -h /目录
选项:
应用案例:
[root@hadoop1 opt]# du -hac --max-depth=1 /opt
4.0K /opt/rh
5.4M /opt/tmp
163M /opt/vmware-tools-distrib
54M /opt/VMwareTools-10.3.10-13959562.tar.gz
222M /opt
222M 总用量
磁盘情况-工作实用指令
统计/home文件夹下文件的个数
[root@hadoop1 opt]# ls -l /opt
总用量 55124
drwxr-xr-x. 2 root root 4096 10月 31 2018 rh
drwxr-xr-x. 3 root root 4096 6月 26 00:23 tmp
-rw-r--r--. 1 root root 56431201 6月 13 2019 VMwareTools-10.3.10-13959562.tar.gz
drwxr-xr-x. 9 root root 4096 6月 13 2019 vmware-tools-distrib
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 opt]# ls -l /opt | grep "^-"
//"^-":过滤出以-开头的,即文件
-rw-r--r--. 1 root root 56431201 6月 13 2019 VMwareTools-10.3.10-13959562.tar.gz
[root@hadoop1 opt]# ls -l /opt | grep "^-" | wc -l
//wc:统计个数
1
统计/home文件夹下目录的个数
[root@hadoop1 opt]# ls -l /opt | grep "^d" | wc -l
3
统计/home文件夹下文件的个数,包括子文件夹里的
[root@hadoop1 /]# ls -lR /home | grep "^-" | wc -l
//R:代表递归
13
统计文件夹下目录的个数,包括子文件夹里的
[root@hadoop1 /]# ls -lR /home | grep "^d" | wc -l
13
以树状显示目录结构
[root@hadoop1 /]# tree /home
//未安装tree
bash: tree: 未找到命令...
您在 /var/spool/mail/root 中有新邮件
[root@hadoop1 /]# yum install tree
//安装
[root@hadoop1 /]# tree /home
/home
├── aaa.txt
├── a.txt
├── bbb
│ └── aaa.txt
├── ccc.txt
├── cool
├── crontabtest.txt
├── c.txt
├── fox
│ └── ok.txt
├── homeinfo.txt
├── jack
├── mya.tar.gz
├── mycal
├── myhome.zip
├── myshell.sh
└── tom
├── a.txt
├── \345\205\254\345\205\261
├── \346\250\241\346\235\277
├── \350\247\206\351\242\221
├── \345\233\276\347\211\207
├── \346\226\207\346\241\243
├── \344\270\213\350\275\275
├── \351\237\263\344\271\220
└── \346\241\214\351\235\242
13 directories, 13 files
Linux网络配置原理图
NAT网络配置:
查看网络IP和网关
ping 测试主机之间网络连通性
基本语法:
ping 目的主机
(功能描述:测试当前服务器是否可以连接目的主机)
应用实例:
//测试当前服务器是否可以连接百度
[root@hadoop1 ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=128 time=34.6 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=128 time=34.3 ms
linux网络环境配置
第一种方法(自动获取):
登陆后,通过界面的来设置自动获取ip
注意:linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样
⭐第二种方法==(指定固定的ip)服务器一定是要固定IP==
直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33
(这里的eth33就是指本机的网络设备-网卡)
将ip地址配置的静态的, ip地址为192.168.184.130(自定义)
ens33文件原内容:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp" #此时为动态配置
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="58116b51-1bee-4c20-a204-9ceff1463a6c"
DEVICE="ens33"
ONBOOT="yes"
修改后的内容:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" #修改为静态配置
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="58116b51-1bee-4c20-a204-9ceff1463a6c"
DEVICE="ens33"
ONBOOT="yes"
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2
同时在虚拟机的虚拟网络编辑中将网关修改
重启网络服务或者重启系统生效
此时查看Windows vmnet8及Linux网络,都已经修改
[root@hadoop1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.130 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::4a2e:89d3:6657:289e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:71:de:2e txqueuelen 1000 (Ethernet)
RX packets 662 bytes 808149 (789.2 KiB)
设置主机名和Hosts映射
设置主机名:
hostname
:查看主机名/etc/hostname
指定设置host映射
目的:使用主机名来ping主机
配置映射关系的文件所在位置:
Windows:“C:\Windows\System32\drivers\etc\hosts”(修改此处即域名劫持)
此时在命令行中已经可以使用主机名ping通了
Linux:/etc/hosts
[root@hadoop001 ~]# vim /etc/hosts
[root@hadoop001 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.1 DESKTOP-55E400K
[root@hadoop001 ~]# ping DESKTOP-55E400K
//关闭防火墙后,可以ping通
PING DESKTOP-55E400K (192.168.200.1) 56(84) bytes of data.
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=30 ttl=64 time=0.619 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=31 ttl=64 time=0.562 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=32 ttl=64 time=0.439 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=33 ttl=64 time=0.551 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=34 ttl=64 time=0.497 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=35 ttl=64 time=0.390 ms
64 bytes from DESKTOP-55E400K (192.168.200.1): icmp_seq=36 ttl=64 time=1.18 ms
主机名解析过程分析
Hosts:一个文本文件,用来记录**IP和Hostname(主机名)**之间的映射
DNS:Domain Name System域名系统,是互联网上作为域名和IP地址相互映射的分布式文件数据库
应用实例:
基本介绍:
显示系统执行的进程
基本介绍:
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
常用选项:
选项 | 描述 |
---|---|
-a | 显示当前终端的所有进程 |
-u | 以用户的格式显示进程信息 |
-x | 显示后台进程运行的参数 |
显示的信息选项:
实例一:查看当前系统有没有目标进程
语法:ps –aux|grep xxx
应用实例:
[root@hadoop001 ~]# ps -aux | grep "sshd"
root 7753 0.0 0.2 112756 4320 ? Ss 16:31 0:00 /usr/sbin/sshd -D
root 8622 0.0 0.2 160848 5608 ? Ss 16:35 0:00 sshd: root@pts/0
root 12067 0.0 0.2 156636 5484 ? Ss 18:04 0:00 sshd: root@pts/1
root 12796 0.0 0.0 112728 988 pts/1 S+ 18:24 0:00 grep --color=auto sshd
实例二:以全格式显示当前所有的进程,查看进程的父进程
语法:ps –ef|grep xxx
-e 显示所有进程 、-f 全格式
应用实例:
终止进程kill和killall
介绍:
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务
基本语法:
kill [选项] 进程号
(功能描述:通过进程号杀死进程)killall 进程名称
(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)常用选项:
-9
:表示强迫进程立即停止
最佳实践:
案例1:踢掉某个非法登录用户
kill 16704
案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务
[root@hadoop001 ~]# ps -aux | grep sshdroot 7753 0.0 0.2 112756 4356 ? Ss 17:18 0:00 /usr/sbin/sshd -Droot 8622 0.0 0.2 160848 5608 ? Ss 17:22 0:00 sshd: root@pts/0root 12067 0.0 0.2 156636 5484 ? Ss 18:51 0:00 sshd: root@pts/1root 16945 1.0 0.2 156636 5492 ? Ss 20:50 0:00 sshd: root@pts/2root 17005 0.0 0.0 112728 988 pts/2 S+ 20:51 0:00 grep --color=auto sshd [root@hadoop001 ~]# kill 7753 //停掉远程登录服务[root@hadoop001 ~]# ps -aux | grep sshdroot 8622 0.0 0.2 160848 5608 ? Ss 17:22 0:00 sshd: root@pts/0root 12067 0.0 0.2 156636 5484 ? Ss 18:51 0:00 sshd: root@pts/1root 16945 0.2 0.2 156636 5492 ? Ss 20:50 0:00 sshd: root@pts/2root 17147 0.0 0.0 112728 984 pts/2 S+ 20:52 0:00 grep --color=auto sshd
//此时其他用户已经登不上来了Connecting to 192.168.200.130:22...Could not connect to '192.168.200.130' (port 22): Connection failed.Type `help' to learn how to use Xshell prompt.[F:\~]$
重启服务:
[root@hadoop001 ~]# /bin/systemctl start sshd.service //重启服务[root@hadoop001 ~]# ps -aux | grep sshdroot 8622 0.0 0.2 160848 5608 ? Ss 17:22 0:00 sshd: root@pts/0root 12067 0.0 0.2 156636 5484 ? Ss 18:51 0:00 sshd: root@pts/1root 16945 0.1 0.2 156636 5492 ? Ss 20:50 0:00 sshd: root@pts/2root 17196 0.4 0.2 112756 4316 ? Ss 20:54 0:00 /usr/sbin/sshd -Droot 17198 0.0 0.0 112728 988 pts/2 S+ 20:54 0:00 grep --color=auto sshd
案例3: 终止多个gedit 编辑器
killall gedit
案例4:强制杀掉一个终端
kill -9 bash对应的进程号
查看进程树pstree
基本语法:
pstree [选项]
,可以更加直观的来看进程信息
[root@hadoop001 ~]# pstreesystemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} │ └─3*[{at-spi-bus-laun}] ├─at-spi2-registr───2*[{at-spi2-registr}] ├─atd ├─auditd─┬─audispd─┬─sedispatch...
常用选项:
应用实例:
案例1:请你树状的形式显示进程的pid
[root@hadoop001 ~]# pstree -p
systemd(1)─┬─ModemManager(6931)─┬─{ModemManager}(6978)
│ └─{ModemManager}(7001)
├─NetworkManager(7186)─┬─{NetworkManager}(7285)
│ └─{NetworkManager}(7298)
├─VGAuthService(7006)
├─abrt-watch-log(7009)
├─abrt-watch-log(7013)
├─abrtd(7008)
├─accounts-daemon(6927)─┬─{accounts-daemon}(6973)
案例2: 请你树状的形式进程的用户id
[root@hadoop001 ~]# pstree -u
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点
原理图:
后台程序=守护进程=服务
service管理指令:
查看服务名:
服务的运行级别(runlevel):
chkconfig指令
chkconfig --list | grep xxx
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
systemctl管理指令(临时效果)
基本语法:systemctl [start | stop | restart | reload | status] 服务名
systemctl指令管理服务在/usr/lib/systemd/system 查看
[root@hadoop001 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 六 2021-07-03 08:38:51 CST; 6min ago
Docs: man:firewalld(1)
Main PID: 7137 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─7137 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
7月 03 08:38:49 hadoop001 systemd[1]: Starting firewalld - dynamic firewall daemon...
7月 03 08:38:51 hadoop001 systemd[1]: Started firewalld - dynamic firewall daemon.
systemctl设置服务的自启动状态(永久效果)
基本语法:
systemctl list-unit-files [| grep 服务名]
(查看服务开机启动状态)systemctl enable 服务名
(设置服务开机自启)systemctl disable 服务名
(关闭服务开机自启)systemctl is-enabled 服务名
(查询某个服务是否是自启动的)应用案例:
[root@hadoop001 ~]# systemctl list-unit-files | grep firewalld
firewalld.service
enabled
[root@hadoop001 ~]# systemctl is-enabled firewalld
enabled
[root@hadoop001 ~]# systemctl is-enabled sshd
enabled
防火墙
防火墙打开或者关闭指定的端口
真正的生产环境,往往需要将防火墙打开,但是外部请求数据包就不能跟服务器监听端口通讯,此时就需要打开指定的端口
firewall指令(❗ firewall-cmd中间没空格啊,真的晕眩)
firewall-cmd --permanent --add-port=端口号/协议号
firewall-cmd --permanent --remove-port=端口号/协议号
firewall-cmd --reload
firewall-cmd --query-port=端口号/协议号
应用案例:
[root@hadoop001 ~]# firewall-cmd --permanent --add-port=111/tcp
success
[root@hadoop001 ~]# firewall-cmd --reload
success
[root@hadoop001 ~]# firewall-cmd --query-port=111/tcp
yes
//关闭111端口
[root@hadoop001 ~]# firewall-cmd --permanent --remove-port=111/tcp
success
[root@hadoop001 ~]# firewall-cmd --query-port=111/tcp
yes //不reload不会生效
[root@hadoop001 ~]# firewall-cmd --reload
success
[root@hadoop001 ~]# firewall-cmd --query-port=111/tcp
no //已关闭
介绍:
基本语法:top [选项]
常用选项:
选项 | 功能 |
---|---|
-d 秒数 | 指定top指令每隔几秒更新,默认是3秒 |
-i | 使top不显示任何闲置或僵死(zombie)的进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作的说明:
操作 | 功能 |
---|---|
P | 以CPU使用率排序(默认) |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
监控指定的用户进程:
终止指定的进程:
基本语法:netstat [选项]
选项说明
应用案例
//请查看服务名为 sshd 的服务的信息
[root@hadoop001 ~]# netstat -anp | sshd
介绍:
rpm包的简单查询指令
基本语法:
查询已安装的rpm列表: rpm –qa | grep xx
应用案例:
[root@hadoop001 ~]# rpm -qa | grep firefox
firefox-60.2.2-1.el7.centos.x86_64
//名称:firefox
//版本号: 60.2.2-1
//适用操作系统: l7.centos.x86_64
//表示centos6.x的64位系统
//如果是i686、 i386表示32位系统, noarch表示通用
rpm包的其它查询指令
rpm -qa
:查询所安装的所有rpm软件包rpm -qa | more
:分页显示rpm -qa | grep xxx
:过滤查找rpm -q 软件包名
:查询软件包是否安装rpm -qi 软件包名
:查询软件包信息rpm -ql 软件包名
:查询安装到哪里了,包含哪些文件rpm -qf 文件全路径名
:查询某个文件在之前安装时所属的软件卸载rpm包
rpm -e RPM包的名称
--nodeps
,就可以强制删除,但是一般不推荐这样做, 因为依赖于该软件包的程序可能无法运行安装rpm包
rpm -ivh RPM包全路径名称
-i
:install 安装-v
:verbose 提示-h
:hash 进度条