linux基础知识——相关的基础命令
1、Linux系统下载及安装(注意,必须使用vmware16,win10系统不能是家庭版系统)Linux系统镜像下载下载ISO:https://distrowatch.com/步骤:搜索“CentOS”-“镜像下载站点”-“北京外国语大学”-“mirror”-选择版本-“isos”-“x86_64”-选择对应的.iso文件并下载2、Linux系统相关工具使用(1)xshell(2)secureCR
1、Linux系统下载及安装(注意,必须使用vmware16,win10系统不能是家庭版系统)
Linux系统镜像下载
下载ISO:https://distrowatch.com/
步骤:搜索“CentOS”-“镜像下载站点”-“北京外国语大学”-“mirror”-
选择版本-“isos”-“x86_64”-选择对应的.iso文件并下载
2、Linux系统相关工具使用
(1)xshell
(2)secureCRT ====建议使用
(3)xftp
3、拍摄系统快照
步骤:虚拟机-快照-拍摄快照-拍摄快照
注意:开机、关机或系统启动过程中,均可以拍摄快照。
拍摄快照:实际上是创建系统还原点,方便跳转到之前的存档。
4、系统克隆
步骤:虚拟机-管理-克隆
注意:只能在linux系统处于关机状态下,才能克隆系统。建议进行完整的克隆。
5、常用命令
注意:所有命令都区分大小写
(1)cd
cd : change directory,改变目录,切换目录
注意:cd后面不跟参数,默认直接返回到当前用户的家目录(home目录,用~表示的)。
root用户的家目录是/root,其他用户的家目录均为/home/用户名
举例:
[root@zhangsan usr]# cd ~
[root@zhangsan ~]#
注意:cd后面不跟参数,与跟~,功能都是直接跳转到当前用户的家目录
[root@zhangsan usr]# cd
[root@zhangsan ~]#
(2)who
who:用于查看登录过系统的用户信息
(3)w
w:用于查看登录过系统的用户信息,显示的用户登录信息更详细
(4)whoami
whoami:只显示当前操作用户
(5)hostname
hostname:用于显示计算机名
补充:修改计算机名命令格式为[root@lisi ~]# hostnamectl set-hostname zhangsan101
(6)dmesg
dmsg:用于显示开机启动的过程信息
例如:分页显示系统启动过程中屏幕上的信息
命令:dmesg | more
(7)clear
clear:清除屏幕,功能等价于 ctrl+l
(8)date
date:用于查看当前系统日期
命令格式:date +%F 按年-月-日输出日期,类似的还有date+%c、date+%D
(9)cal
cal:显示日历
命令格式:cal,等价于cal -1,类似用法还有cal -y , cal -n 5
(10)history
history : 用于查看历史命令,即被执行过的命令。
命令格式:
[root@zhangsan101 ~]# history | more
1 init 0
2 init --help
3 systemctl get-default
4 init 3
5 exit
6 ip a
7 nmtui
8 exit
9 useradd yewenqian
10 ls /home
11 su - yewenqian
12 whoami
13 hostname
[root@zhangsan101 ~]# !12
(11)tab
tab:用于对当前命令自动补全
练习:cat /etc/sysconfig/network-scripts/ifcfg-ens33
(12)alias
alias:给命令组合取别名
举例:给删除命令取别名
命令格式:alias shanchu=‘rm -rf’
[root@zhangsan101 ~]# alias shanchu=‘rm -rf’
[root@zhangsan101 ~]# shanchu ./*
(13)~
~:波浪线,表示当前用户的家目录(home目录)
例如:/home/zhangsan , /root
(14)man
man: 用来获取帮助,其功能等价于–help
举例:lvcreate --help 或 man lvcreate
(15)/
/:表示根目录,最顶端的目录
切记:不能执行 rm -rf /*
(16)相对路由
./ 表示当前目录,往往./可以省略不写。
举例:mkdir -p aa/bb,表示在当前目录下创建aa及其子目录bb
…/ 表示返回上一级目录
…/… 或…/…/ 都表示返回上两级目录,也就是说一个…/表示返回上一级目录
举例:
[root@zhangsan aa]# pwd
/root/aa
[root@zhangsan aa]# cd ./
[root@zhangsan aa]# pwd
/root/aa
[root@zhangsan aa]# cd .
[root@zhangsan aa]# cd …
[root@zhangsan ~]# tree aa
aa
└── bb
└── cc
└── dd
└── ee
4 directories, 0 files
[root@zhangsan ~]# cd ./aa/bb/cc/dd
[root@zhangsan dd]# pwd
/root/aa/bb/cc/dd
[root@zhangsan dd]# cd …/…/…/
(17)绝对路径
从“/”(也被称为根目录)开始的路径,比如/usr、/etc/apt、/usr/local/bin就是绝对路径,它指向系统中一个绝对的位置。
举例:
[root@zhangsan ~]# cd /root/aa/bb/cc/dd
[root@zhangsan dd]# pwd
/root/aa/bb/cc/dd
[root@zhangsan dd]# touch /opt/software/zhangsan.txt
(18)pwd――显示工作目录
pwd: print work directory,打印工作目录的意思。功能:列出当前所在位置的完整路径。
[root@zhangsan dd]# pwd
/root/aa/bb/cc/dd
(19)ls――显示指定目录的清单
ls: list ,列出文件和目录清单
常用选项:
-a 显示所有文件,包含隐藏文件;包括“.“和“…“;
-A 显示所有文件,包含隐藏文件;不包括“.“和“…“;
-d 仅可以查看目录的属性参数及信息;
-l 长格式输出,包含文件属性。
-h 显示文件或目录的大小;
-R 递归显示,即列出某个目录及其子目录下的所有文件和目录。
[root@zhangsan cc]# ll #不显示.和…目录,不显示隐藏文件
总用量 0
drwxr-xr-x. 3 root root 16 9月 18 01:08 dd
-rw-r–r--. 1 root root 0 9月 18 01:22 fs.sh
-rw-r–r--. 1 root root 0 9月 18 01:22 s1.txt
[root@zhangsan cc]# ll -a #显示.和…目录,并显示隐藏文件
总用量 0
drwxr-xr-x. 3 root root 58 9月 18 01:25 .
drwxr-xr-x. 3 root root 16 9月 18 01:08 …
drwxr-xr-x. 3 root root 16 9月 18 01:08 dd
-rw-r–r--. 1 root root 0 9月 18 01:22 fs.sh
-rw-r–r--. 1 root root 0 9月 18 01:22 s1.txt
-rw-r–r--. 1 root root 0 9月 18 01:25 .s2.txt
[root@zhangsan cc]# ll -A #不显示.和…目录,显示隐藏文件
总用量 0
drwxr-xr-x. 3 root root 16 9月 18 01:08 dd
-rw-r–r--. 1 root root 0 9月 18 01:22 fs.sh
-rw-r–r--. 1 root root 0 9月 18 01:22 s1.txt
-rw-r–r--. 1 root root 0 9月 18 01:25 .s2.txt
(20)stat
stat命令可以用来显示文件或文件系统状态信息,主要用来查看inode的数值,用以判断文件或目录是否属于同一个节点。
[root@zhangsan ~]# stat aa
文件:aa
大小:26 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:67871938 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
(21)cat――显示文件的内容
格式:cat [选项] 文件名
选项:-n:显示行号
举例:[root@zhangsan ~]# cat -n /etc/passwd | more #以分页的方式显示账号信息
(22)more――逐页显示文件中的内容(仅向前翻页)
命令格式:more 文件路径
举例:more /etc/passwd
more -10 /etc/passwd #每页显示10行
(23)less――逐页显示文件中的内容(前后翻页)
less命令的功能比more命令更强大,用法比more更灵活,可以往前和往后翻页。
命令格式:less 文件路径
举例:less /etc/passwd
(24)head――查看文件的前n行
head命令用来查看具体文件的前面几行的内容,默认显示前10行。
格式:head [-n number] 文件
参数:-n:后面接数字,表示显示几行。
举例:
[root@zhangsan ~]# head -2 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
[root@zhangsan ~]# head -n 3 /etc/passwd
root❌0:0:root:/root:/bin/bash
bin❌1:1:bin:/bin:/sbin/nologin
daemon❌2:2:daemon:/sbin:/sbin/nologin
(25)tail――查看文件的最后n行
tail命令用来查看具体文件的最后几行的内容,默认显示最后10行,可以使用 tail 来观察日志文件被更新的过程。
格式:tail [-n number] 文件
参数:-n:后面接数字,表示显示几行。
举例:
[root@zhangsan ~]# tail -3 /etc/passwd
centos84❌1000:1000:centos84:/home/centos84:/bin/bash
postfix❌89:89::/var/spool/postfix:/sbin/nologin
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@zhangsan ~]# tail -n 2 /etc/passwd
postfix❌89:89::/var/spool/postfix:/sbin/nologin
apache❌48:48:Apache:/usr/share/httpd:/sbin/nologin
(26) file ——显示文件或目录的类型
如果想知道某个文件的基本信息,例如,是属于ASCII、数据文件,还是二进制文件,可以利用file命令来查看。
格式:file 文件名或目录
举例:
[root@zhangsan ~]# file aa
aa: directory
[root@zhangsan ~]# file f1.sh
f1.sh: ASCII text
[root@zhangsan ~]# file myetc.tar.gz
myetc.tar.gz: gzip compressed data, last modified: Sat Sep 18 15:56:57 2021, from Unix, original size 27811840
(27)whereis――查找文件位置
whereis是查找可执行文件、源代码文件、帮助文件在文件系统中的位置。
格式:whereis [选项] 文件或目录
选项:
-b:只找二进制文件;
-m: 只查找说明文件;
-s:只找源文件
举例:
[root@zhangsan ~]# whereis mv
mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz /usr/share/man/man1p/mv.1p.gz
[root@zhangsan ~]# whereis cp
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
(28)locate ——查找绝对路径中包含指定字符串的文件
格式:locate 字符串 #需要在centos8中更新数据库,执行命令updatedb
举例:locate passwd
[root@zhangsan ~]# locate a1.java
/root/a1.java
(29)find ――查找命令
对于文件和目录的一些比较复杂的搜索操作,可以灵活应用最基本的通配符和搜索命令find实现。在某一目录及其所有的子目录中快速搜索具有某些特征的目录或文件,可以使用find命令。
使用find命令的常用语法是:
find [Directory] [Option] [-exec Command]
举例:查找拥有者为zhangsan的所有文件
[root@zhangsan ~]# find / -xdev -user zhangsan -type f -exec cp -a {} ./m1 ;
[root@zhangsan ~]# ll m1
总用量 0
-rw-rw-r–. 1 zhangsan zhangsan 0 9月 19 00:30 1.txt
-rw-rw-r–. 1 zhangsan zhangsan 0 9月 19 00:30 4.txt
-rw-rw----. 1 zhangsan mail 0 9月 19 00:29 zhangsan
[root@zhangsan ~]# find / -xdev -user zhangsan -type f -exec cp -a {} ./m1 ;
[root@zhangsan ~]# ll m1
总用量 0
-rw-rw-r–. 1 zhangsan zhangsan 0 9月 19 00:30 1.txt
-rw-rw-r–. 1 zhangsan zhangsan 0 9月 19 00:30 4.txt
-rw-rw----. 1 zhangsan mail 0 9月 19 00:29 zhangsan
任务1:执行以下步骤,完成后接龙
1、 file /etc/hosts
file /etc
2、whereis ls
whereis -b ls
whereis -m ls
3、locate passwd
4、普通应用:查找文件名为hosts的文件
find / -name hosts
高级应用:查找文件名为hosts的文件,并将查询结果复制到/opt目录。
find / -name hosts -exec cp {} /opt ;
5、which pwd
6、通配符
(1)* ,星号代表任意多个字符
(2)?,问号代表任意1个字符
(3)[],表示取方括号中的其中1个字符
任务1,做完在群里接龙:
1、which,只适合查找动作
which pwd
which cp
which passwd
2、locate ,适合查找文件或目录
mkdir abc123
updatedb #如果没有执行更新数据库操作是查不到的
locate abc123
3、通配符
* 代表任意字符,个数不限
?代表任意1个字符
[]表示从中选择1个字符
举例:ll ?[1,l,s]*
ll ?1*
ll wg*
ll file[1-2][2,3]* 等价于ll file[12][23]*
4、touch #当目标文件不存在时,则创建文件;如果目标文件已存在,则修改目标文件的存取时间
touch --date=‘2020-09-20’ 123.txt
touch --date=‘2020-09-10’ *
任务2:执行以下步骤
1、touch #该命令用于创建文件或修改文件和目录的时间。如果目标文件存在,则只修改目标文件的访问时间,不修改目标文件里面的内容。如果目标文件不存在,则创建目标文件。
touch a1.txt
touch --date=‘2020-12-10’ a1.txt
touch *
touch a1{1…4}.txt c1.sh m1.java n2.py
2、mkdir #该命令用来创建目录
[root@zhangsan101 ~]# mkdir -p aa/bb/cc/dd/ee
[root@zhangsan101 ~]# tree
[root@zhangsan101 ~]# mkdir a1{1…5} c11 s123
[root@zhangsan101 ~]# ll
3、rmdir #该命令只能用于删除空目录
举例:rmdir c11
4、rm #该命令用于删除文件或目录
rm -rf ./* #注意,当前目录不能是根目录/
rm -rf s123
任务3:
1、cp #该命令用于复制文件或目录
[root@zhangsan101 ~]# touch a1.txt
[root@zhangsan101 ~]# mkdir -p aa/bb/cc/dd/ee
[root@zhangsan101 ~]# cp a1.txt aa/bb/cc/dd/
[root@zhangsan101 ~]# ll aa/bb/cc/dd
总用量 0
-rw-r–r--. 1 root root 0 9月 24 16:41 a1.txt
drwxr-xr-x. 2 root root 6 9月 24 16:40 ee
[root@zhangsan101 ~]# cp -r aa /opt/ #注意:复制非空目录必须要加-r
[root@zhangsan101 ~]# ll /opt/
总用量 0
drwxr-xr-x. 3 root root 16 9月 24 16:46 aa
2、du #该命令用于查看文件或目录的大小
du -sh /etc
du -sh /etc /boot /mnt
du -sh a1.txt
3、scp #该命令用于给远程主机传文件
方式1:推(push),即从本地主机将文件或目录推送给其他主机
[root@zhangsan101 ~]# scp -r /etc root@zhangsan103:/opt/
检查是否推送成功:
[root@zhangsan103 ~]# ll /opt
总用量 12
drwxr-xr-x. 153 root root 8192 9月 25 01:37 etc
方式2:拉(pull),即从远程主机将文件或目录拉(拖)到本地主机
[root@zhangsan103 ~]# scp -r root@192.168.1.101:/etc /opt/
检查是否推送成功:
[root@zhangsan103 ~]# ll /opt
总用量 12
drwxr-xr-x. 153 root root 8192 9月 25 01:42 etc
方式3:中间人,即由本地主机从1台服务器提取文件发给另外1台服务器
[root@zhangsan102 ~]# scp -r root@192.168.1.101:/etc root@192.168.1.103:/opt/
检查是否推送成功:
[root@zhangsan103 ~]# ll /opt
总用量 12
drwxr-xr-x. 153 root root 8192 9月 25 01:46 etc
任务1:
1、练习使用mv命令
touch a123.txt
ll
mv a123.txt a111.txt
ll
mkdir aaa
ll
mv aaa ccc
ll
2、tar #该命令用于压缩和解压缩
#接下来,对/etc目录进行打包
[root@zhangsan101 ~]# du -sh /etc
[root@zhangsan102 ~]# tar -zcvf myetc2.tar.gz /etc #调用gzip对/etc目录打包
[root@zhangsan101 ~]# ll -h etc* #查看打包后压缩包大小
-rw-r–r-- 1 root root 4.4M 2月 6 22:56 etc.tar.bz
-rw-r–r-- 1 root root 6.0M 2月 6 22:58 etc.tar.gz #由32M变成了9.9M,gzip的压缩比不高
[root@zhangsan101 ~]# tar -jcvf etc.tar.bz /etc #调用bz2压缩工具对/etc目录进行压缩
[root@zhangsan101 ~]# ll -h etc.tar.bz
-rw-r–r-- 1 root root 4.4M 2月 6 22:56 etc.tar.bz
[root@zhangsan101 ~]# tar -Jcvf etc.tar.xz /etc #调用xz压缩工具对/etc目录进行压缩
[root@zhangsan101 ~]# ll -h etc*
-rw-r–r-- 1 root root 4.4M 2月 6 22:56 etc.tar.bz
-rw-r–r-- 1 root root 6.0M 2月 6 22:58 etc.tar.gz
-rw-r–r-- 1 root root 3.7M 2月 6 23:00 etc.tar.xz # xz的压缩比最高,但压缩过程最慢
[root@zhangsan102 ~]# tar -ztf myetc2.tar.gz #查看压缩包中包含的内容
[root@zhangsan101 ~]# file etc.tar.bz #查看压缩包是用哪种压缩工具压缩的
etc.tar.bz: bzip2 compressed data, block size = 900k
[root@zhangsan101 ~]# file etc.tar.xz
etc.tar.xz: XZ compressed data
[root@zhangsan101 ~]# file etc.tar.gz
etc.tar.gz: gzip compressed data, last modified: Sat Feb 6 14:58:30 2021, from Unix, original size 27801600
查看压缩包里面的文件内容:
tar -ztf etc1.tar.gz
tar -jtf etc2.tar.bz
tar -Jtf etc3.tar.xz
tar -zxf etc1.tar.gz -C /opt #使用gzip解压缩
tar -jxf etc2.tar.bz -C /opt #使用bzip2解压缩
tar -Jxf etc3.tar.xz -C /opt/ #使用XZ解压缩
任务1:
1、关闭虚拟机,再添加1块10G的硬盘;
2、虚拟机开机,并通过secureCRT(或终端)执行lsblk命令,确认新硬盘是否添加成功;
任务2:对磁盘分区
分区类型:主分区、扩展分区、逻辑分区、交换分区(swap)
任何一块硬盘,最多可以创建4个主分区;最多可以创建1个扩展分区;
如果一块硬盘下存在扩展分区,则扩展分区下默认可以创建无数个逻辑分区。
交换分区:用作内存的缓存使用。
(1)划分1个500M大小的分区,以xfs文件系统格式挂载到/root/aa目录。
[root@zhangsan101 ~]# fdisk /dev/sdb
依次执行n—p---+500M—w----lsblk
然后格式化分区,执行命令:mkfs.xfs /dev/sdb1
接下来,在/root下面创建aa目录,执行命令:mkdir /root/aa
对磁盘分区进行挂载,执行命令:mount /dev/sdb1 /root/aa
最后,检查是否挂载成功,执行命令:[root@zhangsan101 ~]# df -hT
如果要卸载,则执行umount /dev/sdb1或 umount /root/aa
#注意,挂载目录只是作为访问磁盘分区的入口,不用于存储数据。
(2)划分1个2G大小的分区,以ext2文件系统格式挂载到/root/bb目录。
[root@zhangsan101 ~]# fdisk /dev/sdb
依次执行n(创建分区)—p(主分区)—+2G—p(打印分区表)—w(保存并退出)----lsblk(查看挂载情况)
然后格式化分区,执行命令:mkfs.ext2 /dev/sdb2
接下来,在/root下面创建bb目录,执行命令:mkdir /root/bb
对磁盘分区进行挂载,执行命令:mount /dev/sdb2 /root/bb
最后,检查是否挂载成功,执行命令:[root@zhangsan101 ~]# df -hT
如果要卸载,则执行umount /dev/sdb2或 umount /root/bb
(3)划分1个100M大小的分区,以ext3文件系统格式挂载到/root/cc目录。
(4)划分1个1G大小的逻辑分区,以ext4文件系统格式挂载到/root/dd目录。
任务1,熟练vim编辑器的使用(不用交,在群里汇报练习完成情况即可):
从/etc/ssh/ssh_config.d/05-redhat.conf配置文件中,提取以下内容并保存到/root/a1.txt中:
Match final all
GSSAPIAuthentication yes
ForwardX11Trusted yes
LC_MESSAGES
SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
SendEnv XMODIFIERS
在命令模式下:
1、按shift+v组合键,选择当前行,结合上下方向键可以选择连续的多行;
2、ctrl+v组合键,选择当前列,结合上下和左右方向键,可以选择连续的多列;
3、当选中多行或多列时,按y表示复制,按p表示粘贴,按x表示删除
如果要删除从当前行到文件末尾的所有行,先按shift+v,然后按shift+g,最后,再按x删除选中的所有行
任务2:三种文本编辑器
1、gedit
该编辑器功能类似于windows里面的记事本,操作方便简单,但该编辑器只能在linux系统本地使用,不支持在secureCRT或xshell等仿真工具中使用。
用法:gedit
gedit 文件名
举例:gedit a1.txt
2、nano
该编辑器功能类似于windows里面的记事本,操作简单,该编辑器可以在linux系统本地以及secureCRT、xshell等仿真工具中使用。
举例:nano a123.txt #ctrl+o保存,ctrl+x退出
3、vim
vim编辑的功能很强大,可以定制文本编辑环境。功能比日常使用的vi命令更强大。
命令格式:vim 文件名
举例:vim a111.txt
课后任务(不用交),完成任务后请接龙:
在虚拟机中添加4块10G的硬盘,做raid 5和raid 10。
从raid10改做raid5实验时,要先执行命令mdadm --stop md10
[root@zhangsan101 ~]# mdadm /dev/md10 -f /dev/sdc
再执行创建raid5的命令:
mdadm -Cv /dev/md5 -a yes -n 4 -l 5 /dev/sdb /dev/sdc /dev/sdd /dev/sde
模拟/dev/sdc出现故障
mdadm /dev/md10 -f /dev/sdc
umount aa
mdadm /dev/md10 -a /dev/sdc
mdadm -D /dev/md10
用以下命令将raid10改完rand5:
mdadm --stop /dev/md10
lsblk
mkfs.ext3 /dev/md5
mount /dev/md5 bb
df -hT
Note:逻辑卷的创建、扩容与缩容
先后顺序:创建物理卷-创建卷组-创建逻辑卷
#可以根据多块硬盘创建物理卷,也可以根据多个硬盘分区创建物理卷
任务2:创建逻辑卷
步骤:
1、执行命令:fdisk /dev/sdb #分2个分区,其中,1个500M,另1个800M
2、创建物理卷:pvcreate /dev/sdb1 /dev/sdb2
查看物理卷:pvs
3、创建卷组:vgcreate EXAM /dev/sdb1 /dev/sdb2 -s 20m
查看卷组信息:vgdisplay 或vgs
4、创建逻辑卷:lvcreate -n lv2 -l 45 EXAM
查看逻辑卷:lvdisplay 或 lvs
5、格式化逻辑卷,并挂载
mkfs.ext3 /dev/EXAM/lv2 #格式化逻辑卷lv2
mkdir /mnt/lv2 #创建挂载目录
vi /etc/fstab
内容如下:在fstab文件的末行建立映射
/dev/EXAM/lv2 /mnt/lv2 ext3 defaults 0 0
保存并退出/etc/fstab后,再执行mount -a 进行挂载
任务1:创建硬链接与软链接
1、在/root目录下,删除所有文件和目录,然后再创建文件a1.txt和c1.txt 、目录aa和cc
命令:cd
rm -rf ./*
touch a1.txt c1.txt
mkdir aa cc
ll
2、给a1.txt创建硬链接文件,文件名为a2.txt
命令: ln a1.txt a2.txt
ll
3、往a1.txt中输入数据,数据内容任意,观察文件大小,并检查两个文件的inode值
命令: echo “fsafdlfjldjglsadfjldlgdsjgldfs” > a1.txt
ll -i a1.txt a2.txt
4、给aa目录创建硬链接,发现报错,是正常的。
命令: ln aa abc #报错,是正常的,不能对目录创建硬链接
5、给c1.txt创建软链接,链接文件名为c2.txt
命令: ln -s c1.txt c2.txt
6、往c1.txt中输入数据,数据内容任意,观察文件大小,并检查两个文件的inode值
命令: echo “fsafdlfjldjglsadfjldlgdsjgldfs” > c1.txt
ll -i c1.txt c2.txt
7、删除c1.txt,再观察文件c2.txt是否可以正常使用
命令:rm -f c1.txt
ll #c2.txt文件的右侧会出现闪烁,是正常的,说明c2.txt的源文件出现了故障
cat c2.txt #无法查看是正常的
8、对目录cc创建软链接,链接文件为ccc
命令: ln -s cc ccc #不会报错,可以对目录创建软链接
任务3:筛选出满足条件的行或列
1、在/root目录下创建a1.txt、a2.txt和a3.txt,然后提取出a2.txt和a3.txt的第1列和第9列的数据信息
命令:cd
rm -rf ./*
touch a{1…3}.txt
ll a2.txt a3.txt | awk ‘{print $1,$9}’
注意:awk命令是以空格作为分隔符的
2、跟进下列数据创建文件t1.txt,然后执行相关操作。
“0001”, “Xiao Zhang”, “HeNan”, “ZhengZhou”,“FuZhou 180”
“0002”, “Xiao Wang”, “HeNan”, “ZhengZhou”,“QuanZhou 192”
“0003”, “Xiao Zhao”, “HeNan”, “LuoYang”,“XiaMen 192”
(1)筛选出包含ZhengZhou的记录,并统计行数。
命令:grep ZhengZhou t1.txt | wc -l
(2)筛选出包含FuZhou和XiaMen的所有记录,并列出第1、2、5列的数据信息。
命令:grep -v QuanZhou t1.txt | cut -f 1,2,5 -d “,”
(3)将t1.txt中QuanZhou记录的所有小写英文字母改成大写字母。
命令:grep QuanZhou t1.txt | tr ‘a-z’ ‘A-Z’
任务4:查看与管理进程
1、通过后台运行3个sleep进程,系统等待时间分别为1000、2000、3000秒
命令:sleep 1000 &
sleep 2000 &
sleep 3000 &
2、查看sleep 的3个进程,并将sleep1000进程结束掉
命令:ps aux | grep sleep
记住sleep 1000的进程ID,并杀死进程
kill -9 进程ID
3、再次查看sleep 的进程,并将所有sleep进程全部结束掉
命令:ps aux | grep sleep
killall -9 sleep
任务2:3种重定向的使用
1、输入重定向
输入重定向:用<表示
举例1:cat < a1.txt 等价于 cat a1.txt
举例2:ll < ./ 等价于 ll ./
2、输出重定向
(1)覆盖输出
用>表示
举例1: 给a1.txt文件输入123字符串信息
echo “123” >a1.txt
cat a1.txt
举例2:清空a1.txt文件中的内容
命令:>a1.txt
cat a1.txt
(2)追加输出
用>>表示
举例1:往a1.txt中输出字符内容123,然后,再追加输出456。
命令:echo “123” > a1.txt
echo “456” >> a1.txt
cat a1.txt
3、错误输出重定向
(1)错误覆盖输出
用2>表示
举例1:查找包含passwd这个字符串的所有路径,并将正确的结果保存到t1.txt,错误的结果保存到t2.txt中。
命令:useradd zhangsan
find / -user zhangsan >t1.txt 2>t2.txt
举例2:查找包含passwd这个字符串的所有路径,并将正确的结果保存到t1.txt,错误的结果不保存不回显。
命令:find / -user zhangsan >t1.txt 2>/dev/null
举例3:查找包含passwd这个字符串的所有路径,正确和错误的结果均不回显。
命令:find / -name passwd &>/dev/null
举例4:将root用户的密码改为456,并且不允许在命令行有任何回显。
命令:echo “123” | passwd --stdin root >/dev/null
(2)错误追加输出
用2>>表示错误追加输出
举例:查找拥有者为zhang3这个用户的文件或目录,并将错误结果追加输出到a1.txt中。
find / -user zhang3 2>>a1.txt
任务5、定制单次作业
1、设置当晚11:50定时关机
命令:at 11:50pm
内容如下:
init 0
按ctrl+d结束
2、设置今晚凌晨1点,对/etc目录打包,并存放到/opt/bak目录
命令:at 1:00am+1days
内容如下:
mkdir /opt/bak
tar -zcf /opt/bak/etc1.tar.gz /etc
按ctrl+d结束
3、在当前时间后两分钟,在/root目录下创建文件和目录
命令:at 5:22pm #以当前时间是5:20为例
内容如下:
cd
rm -rf ./*
touch a{1…5}.txt
mkdir aa bb cc
tar -zcf aa/etc1.tar.gz /etc &>/dev/null
按ctrl+d结束
在5:22pm时间点观察/root目录是否生成文件、目录和打包的文件。
任务6、定制周期性作业
1、每隔2分钟输出字符串“19wanggong666”。
2、让系统在每周3、6凌晨2:30开始进行系统更新,30分钟后再重新启动系统。
3、让系统每天中午1:00对/etc目录进行打包备份,备份文件保存到/opt/bak目录下。
命令:crontab -e
内容:
*/2 * * * * echo "19wanggong666”
30 2 * * 3,6 yum update
30 2 * * 3,6 shutdown -r+30
0 13 * * * tar -zcf /opt/bak/myetc.tar.gz /etc &> /dev/null
0 13 * * * echo “backup complete!”
输入完成后,保存并退出。
然后,克隆会话,在新窗口中执行命令:
tail -f /var/log/cron
观察日志信息,检查作业运行情况。
任务1:用户管理
1、创建用户zhang1,uid为1200,gid为1200,其他设置默认
命令:
groupadd -g 1200 wanggong
useradd zhang1 -u 1200 -g 1200
检查用户信息:id zhang1
2、创建用户zhang2,所有设置默认
命令:useradd zhang2
检查用户信息:id zhang2
3、创建用户zhang3,该用户禁止用于登录系统,其他设置默认
命令:useradd zhang3 -s /sbin/nologin
检查用户信息:id zhang3
4、给用户zhang1、zhang2、zhang3设置密码,密码均为123
命令:
方法1:echo “123” | passwd --stdin zhang1
echo “123” | passwd --stdin zhang2
echo “123” | passwd --stdin zhang3
方法2:passwd zhang1
passwd zhang2
passwd zhang3
5、锁定用户zhang1
命令:passwd -l zhang1
测试:su - zhang2,然后在zhang2的命令行中su - zhang1,输入密码后报“鉴定故障”,则表示正常。
6、解锁用户zhang1
命令: passwd -u zhang1
测试:su - zhang2,然后在zhang2的命令行中su - zhang1,输入密码后能切换到zhang1,则表示正常。
7、修改用户zhang2,使其主目录变更为/opt/aa目录
命令:mkdir /opt/aa
usermod zhang2 -d /opt/aa
检查用户信息:id zhang2
8、删除用户zhang3
命令:userdel -r zhang3
任务2:组管理
1、创建一个组,组名为jiying,组ID为3000
命令:groupadd jiying -g 3000
2、将zhang1、zhang2加入jiying组
命令:
方法1:gpasswd -a zhang1 jiying
gpasswd -a zhang2 jiying
方法2:usermod zhang1 -G jiying
usermod zhang2 -G jiying
检查加组是否成功:
方法1:id zhang1 #查看是否隶属附加组jiying
id zhang2
方法2:grep jiying /etc/group #查看jiying组后面是否带zhang1、zhang2这两个用户
3、将用户zhang1从jiying组删除
命令:gpasswd -d zhang1 jiying
4、将jiying组改名为2020jiying
命令:groupmod -n 2020jiying jiying
5、将2020jiying组删除
命令:groupdel 2020jiying
任务3:用字符方式修改文件和目录权限
1、在/root/目录下,创建文件a1.txt,c1.txt和目录aa,bb,cc。
命令:cd
rm -rf ./*
touch a1.txt c1.txt
mkdir aa bb cc
2、修改文件a1.txt的权限为所有用户对其都有写权限。
命令:
方法一:
ll a1.txt #查看文件a1.txt当前所具备的权限
chmod a+w a1.txt
ll a1.txt #检查权限是否修改成功
方法二:
ll c1.txt #查看文件c1.txt当前所具备的权限
chmod g+w,o+w a1.txt
ll a1.txt #检查权限是否修改成功
3、修改目录aa的权限,使得拥有者和组均具备可读、可写权限,其他用户具备只读权限。
命令:chmod u-x,g+w,g-x,o-x aa
ll aa -d
4 、修改文件a1.txt的权限,使得拥有者具备可读、可写、可执行权限;组用户具备可写、可执行权限、其他用户不具备权限。
命令:chmod u=rwx,g=wx,o= a1.txt
ll a1.txt
5、修改目录aa的权限,使得拥有者具备可读、可写权限,组具备可读权限,其他用户具备可执行权限。
命令:chmod u=rw,g=r,o=x aa
ll -d aa
任务4:用数字方式修改文件和目录权限
1、将文件a1.txt权限改为643。
命令:chmod 643 a1.txt
ll a1.txt
2、将目录aa的权限改为762。
命令:chmod 762 aa
ll -d aa
3、在aa目录下创建子目录ff和文件f1.txt,将aa目录及其子目录和文件的权限均改为762。
命令:chmod -R 762 aa
ll -d aa
ll aa
任务5:思考修改umask后,文件和目录的具体权限值。
1、查看当前默认的umask值,并创建文件s1.txt和目录ss
命令:umask
touch s1.txt
mkdir ss
ll ss -d
ll s1.txt
请问:目录ss和文件s1.txt的权限数值分别是多少?请说明理由?
2、将umask值改为023,创建目录p1和文件p11.txt,再计算并查看目录和文件的权限值。
命令:umask 023
mkdir p1
touch p11.txt
ll p1 -d
ll p11.txt
请问:目录p1和文件p11.txt的权限数值分别是多少?请说明理由?
答案:目录p1的权限值为 777-023=754
文件p11.txt的权限值为 666-023+1=644
3、将umask值改为035,创建目录p2和文件p22.txt,再计算并查看目录和文件的权限值。
命令:umask 035
mkdir p2
touch p22.txt
ll p2 -d
ll p22.txt
请问:目录p2和文件p22.txt的权限数值分别是多少?请说明理由?
答案:目录p2的权限值为 777-035=742
文件p22.txt的权限值为 666-035+1=642
4、将umask值改为042,创建目录p3和文件p33.txt,再计算并查看目录和文件的权限值。
命令:umask 042
mkdir p3
touch p33.txt
ll p3 -d
ll p33.txt
请问:目录p3和文件p33.txt的权限数值分别是多少?请说明理由?
答案:目录p3的权限值为 777-042=735
文件p33.txt的权限值为 666-042=624
任务6:chown命令的使用
1、创建文件t1.txt、t2.txt、t3.txt,并将t1.txt设置拥有者为zhang1,t2.txt组为zhang2,将t3文件的拥有者为zhang1、组为zhang2。
命令:chown zhang1 t1.txt
chown :zhang2 t2.txt
chown zhang1:zhang2 t3.txt 或chown zhang1.zhang2 t3.txt
2、创建目录f1/f2/f3,并将f1及其子目录拥有者设置为zhang1,组设置为zhang2。
命令:mkdir -p f1/f2/f3
chown -R zhang1:zhang2 f1 #zhang1和zhang2之间的冒号也可用.代替。
任务1、su命令的使用
1、在root用户的命令行下,创建用户laozhang,并设置密码为123
命令:useradd laozhang
echo “123” | passwd --stdin laozhang
2、从root用户切换到laozhang用户的命令行,不改变工作目录,并创建文件和目录。
命令:su laozhang
touch a1.txt #会报错,正常,因为当前处于root用户的工作目录,不是laozhang的工作目录
mkdir aa #会报错,理由同上。
exit #返回到root用户的命令行
3、从root用户切换到laozhang用户的命令行,改变到对应用户的工作目录,并创建文件和目录。
命令:su - laozhang
touch a1.txt #不会报错,因为当前已经处于laozhang自己的工作目录
mkdir aa #不会报错,理由同上。
任务2:sudo命令的使用
1、创建名称为jiying的组,组成员有zhang1、zhang2,另外再创建用户zhang3、zhang4,所有用户的密码均为123。
命令:groupadd jiying
useradd zhang1 -G jiying
useradd zhang2 -G jiying
useradd zhang3
useradd zhang4
echo “123” | passwd --stdin zhang1/2/3/4
2、zhang3需要通过密码执行sudo权限;zhang4免密码执行sudo权限;jiying组里面的所有用户均支持免密码执行sudo权限。
命令:visudo
#在第100行下面,增加以下行:
zhang3 ALL=(ALL) ALL
zhang4 ALL=(ALL) NOPASSWD: ALL
%jiying ALL=(ALL) NOPASSWD: ALL
#保存并退出
3、检查从 root用户依次切换到zhang1/2/3/4用户,然后在对应用户的命令行创建新用户,检查执行sudo命令是否需要密码。
命令:su - zhang1或zhang2
sudo useradd lisi1 #不需要密码,则正确
su - zhang3
sudo userdel lisi1 #需要输入密码,则正确
su - zhang4
sudo useradd lisi2 #不需要密码,则正确
任务3:suid应用
1、创建用户zhangsan、lisi、wangwu这3个用户,然后,将touch命令文件的拥有者改成wangwu,并设置suid,实现凡是使用touch命令创建的文件,拥有者均为wangwu。
命令:useradd zhangsan
useradd lisi
useradd wangwu
echo “123” | passwd --stdin zhangsan | lisi | wangwu
which touch
ll /usr/bin/touch
chown wangwu $_
chmod 4755 $_
ll $_
mkdir /opt/cc
chmod 777 /opt/cc
su - zhangsan
cd /opt/cc
touch a1.txt a2.txt
ll a1.txt a2.txt
#上述实验结果:a1.txt和a2.txt文件的拥有者是wangwu,所属的组是zhangsan
2、去除touch命令文件的suid,并恢复touch命令文件的拥有者为root
命令:su - root
chmod 755 /usr/bin/touch 或chmod u-s /usr/bin/touch
chown root $_
ll $_
任务4 sgid应用
1、设置mkdir命令文件的sgid,实现凡是使用mkdir命令创建的文件,所属组均为wangwu。
命令:
which mkdir
ll /usr/bin/mkdir
chown :wangwu $_
chmod 2755 $_
ll $_
su - zhangsan
mkdir aa bb cc
ll
#上述实验结果:aa、bb、cc目录的拥有者是zhangsan,所属的组是wangwu
2、去除mkdir命令文件的sgid,并恢复mkdir命令文件的所属组为root
命令:su - root
chmod 755 /usr/bin/mkdir 或chmod u-s /usr/bin/mkdir
chown :root $_
ll $_
3、创建/opt/jiying目录,使得任何用户在该目录下创建的文件,所属的组自动隶属于root组。
命令:su - root
cd /opt
mkdir jiying
chmod 2777 jiying
ll -d jiying
su - zhangsan
cd /opt/jiying
touch a1.txt a2.txt
mkdir aa bb cc
ll
#上述实验结果:jiying目录下面的文件和子目录拥有者是zhangsan,所属的组是root
任务5 粘滞位应用
1、在/opt目录下创建abc目录,并设置权限为777,实现任何用户在该目录下所创建的文件或目录,均只有拥有者才能删除。
命令:su - root
cd /opt
mkdir abc
chmod 1777 abc
su - zhangsan
cd /opt/abc
touch t1.txt t2.txt
mkdir tt1 tt2
chmod o+w t*
su - lisi
cd /opt/abc
rm -rf t1.txt tt1 #删除会报错,说明粘滞位在起作用
su - zhangsan
cd /opt/abc
rm -rf t1.txt tt1 #可以删除,说明粘滞位配置成功
任务6 suid和sgid综合应用
1、设置touch命令文件的suid和sgid,实现凡是使用touch命令在/opt/abc下创建的文件,拥有者属于lisi,所属组为wangwu。
命令:
su - root
which touch
ll /usr/bin/touch
chown lisi:wangwu $_
chmod 6755 $_
ll $_
su - zhangsan
cd /opt/abc
touch a1.txt a2.txt
ll a1.txt a2.txt
#上述实验结果:a1.txt、a2.txt文件的拥有者是lisi,所属的组是wangwu
2、去除touch命令文件的suid和sgid,并恢复touch命令文件的拥有者和组均为root
命令:su - root
chmod 755 /usr/bin/touch 或chmod u-s /usr/bin/touch
chown root.root $_
ll $_
任务1:iptables防火墙配置
1、安装iptables-services服务,然后启动iptables-services服务,并设置开机自动启动。
命令:yum -y install iptables-services
systemctl enable iptables --now
systemctl status iptables #查看iptables服务的状态
2、关闭firewalld防火墙,并永久禁用firewalld服务。
命令:systemctl disable firewalld --now
systemctl status firewalld #查看firewalld服务的状态
3、禁止所有主机ping虚拟机,允许所有主机访问虚拟机的httpd服务,禁止所有主机访问虚拟机的ftp访问,禁止所有主机访问虚拟机的8000~9000端口。
命令:iptables -I INPUT -p icmp -j REJECT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j REJECT
iptables -A INPUT -p tcp --dport 8000:9000 -j REJECT
iptables -A INPUT -p udp --dport 8000:9000 -j REJECT
iptables -L
4、保存iptables防火墙配置
命令:service iptables save
任务2:firewalld防火墙配置
1、启动firewalld防火墙服务,并设置开机自启动。
命令:systemctl enable firewalld --now
systemctl status firewalld #查看防火墙的运行状态
2、安装httpd服务(即web服务),并在默认的网站根目录(/var/www/html)下创建网站首页。
命令:yum -y install httpd
cd /var/www/html
echo “19wanggong666” > index.html
systemctl enable httpd --now
systemctl status httpd
3、通过真机的浏览器访问虚拟机的web服务。
步骤:在真机上打开浏览器,在地址栏输入虚拟机的IP地址,如:192.168.1.101,按回车键,应该不能正常显示网页。
原因:因为我们在虚拟机上开启了firewalld防火墙,firewalld防火墙默认对http协议作了过滤,导致真机无法通过http访问虚拟机的web服务。
4、配置firewalld防火墙,放行http流量。
命令:firewall-cmd --get-default-zone #结果为public则正常
firewall-cmd --zone=public --list-services #查看public区域支持的协议或服务是哪些
firewall-cmd --permanent --zone=public --add-service=http #永久添加http服务,即放行http流量
firewall-cmd --reload #重新加载配置,使配置生效
firewall-cmd --zone=public --list-services #再次查看public区域支持的服务或协议有哪些,确认http协议是否添加成功。
5、再次执行第3步,真机能通过http访问虚拟机的web服务,则正常。
任务1:使用case语句编写shell程序
1、由用户从键盘输入一个字符,并判断该字符是否为字母、数字或者其他字符, 并输出相应的提示信息。
代码:
#!/bin/bash
read -p “press some key ,then press return :” KEY
case $KEY in
[a-z]|[A-Z])
echo “It’s a letter.”
;;
[0-9])
echo “It’s a digit.”
;;
*)
echo “It’s function keys、Spacebar or other ksys.”
esac
2、判断在执行程序时所输入的参数,符合相应条件,输出相对应的信息
#!/bin/bash
case $1 in
start | begin)
echo “start something”
;;
stop | end)
echo “stop something”
;;
*)
echo “Ignorant”
;;
esac
3、判断当前系统属于哪种操作系统,并执行相应分支的输出语句
#!/bin/bash
SYSTEM=uname -s
case $SYSTEM in
Linux)
echo “My system is Linux”
echo “Do Linux stuff here…”
;;
FreeBSD)
echo “My system is FreeBSD”
echo “Do FreeBSD stuff here…”
;;
*)
echo “Unknown system : $SYSTEM”
echo “I don’t what to do…”
;;
esac
任务2:使用if语句编写shell脚本
1、使用if判断语句添加用户
NAME=user1
if id KaTeX parse error: Expected 'EOF', got '&' at position 6: NAME &̲> /dev/null ; t…NAME is exist."
else
useradd
N
A
M
E
e
c
h
o
"
NAME echo "
NAMEecho"NAME" | passwd --stdin KaTeX parse error: Expected 'EOF', got '&' at position 6: NAME &̲> /dev/null …NAME is add sucessful"
fi
2、如果用户已存在,显示已存在,则删除此用户并删除此用户的家目录,并提示删除成功;如果不存在,提示用户不存在。
#!/bin/bash
NAME=user1
if ! id $NAME &> /dev/null ; then
echo “The $NAME is not exist.”
else
userdel -r $NAME &> /dev/null
echo “The $NAME is del successful.”
fi
3、给定一个用户,如果其UID为0,就显示此为管理员;否则,就显示其为普通用户;
#!/bin/bash
read -p “please input username:” NAME
NAMEID=‘id -u $NAME’
if [ $NAMEID -eq 0 ]; then
echo “The $NAME is root.”
else
echo “The KaTeX parse error: Expected 'EOF', got '#' at position 75: …81-100分显示nice。 #̲!/bin/bash read…score” -ge 0 -a “
s
c
o
r
e
"
−
l
e
60
]
;
t
h
e
n
e
c
h
o
"
f
a
i
l
"
e
l
i
f
[
“
score" -le 60 ];then echo "fail" elif [“
score"−le60];thenecho"fail"elif[“score” -gt 60 -a "
s
c
o
r
e
"
−
l
e
80
]
;
t
h
e
n
e
c
h
o
"
G
O
O
D
!
"
e
l
i
f
[
“
score" -le 80 ];then echo "GOOD! " elif [“
score"−le80];thenecho"GOOD!"elif[“score”-gt 8e -a “$score” -le 100 ];then
echo"Nice”
else
echo “wrong score”
fi
if [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "90" &̲& "x” -le “100” ]];then
echo “Congratulation,Your grade is A.”
elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "80" &̲& "x” -le “89” ]];then
echo “Good,Your grade is B.”
elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "70" &̲& "x” -le “79” ]];then
echo “Ok.Your grade is C.”
elif [[ “KaTeX parse error: Expected 'EOF', got '&' at position 13: x" -ge "60" &̲& "x” -le “69” ]];then
echo “Yeah,Your grade is D.”
elif [[ “$x” -lt “60” ]];then
echo “Right,Your grade is F.”
else
echo “Unknow argument…”
fi
#!/bin/bash
read -p “pls input x=” x
if ((x>=1)) ;then
let y=2*KaTeX parse error: Expected 'EOF', got '&' at position 17: …+1 elif ((x>=0 &̲& x<1));then y=…y"
考题
知识点:
1、软链接和硬链接的区别?
2、SWAP的作用?创建交换分区的过程
3、ls -l ,以长格式显示的属性内容?
4、head -1 /etc/passwd | /etc/shadow | /etc/group 各个字段的含义
5、raid的种类,以及raid和lvm的区别
6、破解 root密码
7、c语言、java源程序的编译过程
8、systemctl status firewalld、systemctl enable firewalld --now、systemctl start firewalld、systemctl enable firewalld等命令的含义。
9、当前主机为192.168.1.1,要禁止当前主机被192.168.1.2 ssh,请给出相关命令。
iptables -A INPUT -p tcp -s 192.168.1.2/32 -d 192.168.1.1/32 --dport 22 -j REJECT
10、使防火墙放行ftp服务,并设置永久生效。
firewall-cmd --zone=public --permanent --add-port=20-21/tcp
firewall-cmd --reload
firewall-cmd --list-ports
更多推荐
所有评论(0)