基本命令 Linux操作系统与实训 CentOS 7.4 & RHEL 7.4

一、文件目录命令类

1、浏览目录类命令

(1) pwd命令

pwd命令用于显示用户当前所处的目录,如果用户不知道自己当前所处的目录,就必须使用它。

	
	[root@server1 etc] #pwd //用于显示用户当前所处的目录。
	/etc 

(2) cd命令

cd命令用来在不同的目录中进行切换。
用户在登录系统时会处于用户的家目($HOME)中,该目录一般以/home开始,后跟用户名,这个目录就是用户的初始登录目录(root用户的家目录为/root)。
如果用户想切换到其他的目录中,就可以使用cd命令,后跟想要切换的目录名。


	[root@server1 etc]#cd		//改变目录位置至用户登录时的工作目录
	[root@server1 ~ ]#cd dir1		//改变目录位置至当前目录下的dirl子目录
	[root@serverl dir1]#cd ~		//改变目录位置至用户登录时的工作目录(用户的家目录)
	[rooteserverl ~ ]#cd . .		//改变目录位置至当前目录的父目录中
	[root@server1 /]#cd		//改变目录位置至用户登录时的工作目录
	[root@serverl ~]#cd . . /etc //改变目录位置至当前目录的父目录下的etc 子目录
	[rooteserver1 etc]#cd /dir1/subdir1 //利用绝 对路径表示改变目录到/dir1/subdir1目录下
	

在Linux系统中,用“ . ”代表当前目录:用“ . . ”代表当前目录的父目录:用“ ~ ”代表用户的个人家目录(主目录)。
例如,root用户的个人主目录是/root,则不带任何参数的cd命令相当于“cd~”,即将目录切换到用户的家目录。

(3) ls命令

Ls命令用来列出文件或目录信息。该命令的语法为: Ls [参数] [目录或文件]

Is命令的常用参数选项如下。
-a:显示所有文件,包括以“ . ”开头的隐藏文件。
-A:显示指定目录下所有的子目录及文件,包括隐藏文件,但不显示“ . ”和“ . . ”
-c:按文件的修改时间排序。
-C:分成多列显示各行。
-d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“1”选项一起使用,以得到目录的详细信息。
-l:以长格形式显示文件的详细信息。
-i:在输出的第一 列显示文件的i节点号。

	
	例如:
	[root@server1 ~ ]#ls		//列出当前目录下的文件及目录
	[root@server1 ~ ]#ls -a	//列出包括以“,”开始的隐藏文件在内的所有文件
	[root@serverl ~]#ls -t		//依照文件最后修改时间的顺序列出文件
	[root@serverl ~ ]#ls -F	/*列出当前目录下的文件名及其类型。以 / 结尾表示为目录名,以 * 结尾表示为可执行文件,以@结尾表示为符号连接* /
	[root@serverl ~]#ls -l		//列出当前目录下所有文件的权限、所有者、文件大小、修改时间及名称
	[rooteserver1 ~]#ls -lg 	//显示出文件所有者的工作组名
	[root@serverl ~]#ls -R		//显示目录下以及其所有子目录的文件名

2、浏览文件类命令

(1) cat命令

cat命令主要用于滚屏显示文件内容或是将多个文件合并成一个文件。 该命令的语法为: cat [参数]文件名

cat命令的常用参数选项如下。
-b:对输出内容中的非空行标注行号。
-n:对输出内容中的所有行标注行号。

通常使用cat命令查看文件内容。但是cat命令的输出内容不能够分页显示,要查看超过一屏的文件内容,需要使用more或less 等其他命令。
如果在cat命令中没有指定参数,则cat会从标准输人(键盘)中获取内容。

例如,要查看/soft/filel文件内容的命令为:
[root@serverl ~ ]#cat /soft/file1

利用cat命令还可以合并多个文件。
例如,把filel和file2文件的内容合并为file3,且file2文件的内容在filel 文件的内容前面
则命令为:
[rooteserver1 ~]#cat file2 file1>file3
//如果file3文件存在,此命令的执行结果会覆盖file3文件中原有内容
[rooteserver1 ~]#cat file2 file1>>fILe 		
//如果file3文件存在,此命令的执行结果将把file2和file1文件的内容附加到file3文件中原有内容的后面

(2) more命令

在使用cat命令时如果文件太长,用户只能看到文件的最后部分,这时可以使用 more命令一页一页的分屏显示文件的内容。
More命令通常用于分屏显示文件内容。大部分情况下,可以不加任何参数选项来执行more命令查看文件内容。
执行more命令后进入more状态,按Enter键可以向下移动一行;按Space键可以向下移动一页;按q键可以退出more命令。
该命令的语法为: more [参数] 文件名

more命令的常用参数选项如下。
-num:这里的num是一个数字,用来指定分页显示时每页的行数。
+num:指定从文件的第num行开始显示。

例如:
[root@serverl ~ ]#more file1	//以分页方式查看filel文件的内容
[root@serverl ~ ]#cat file1 | more	//以分页方式查看filel 文件的内容

more命令经常在管道中被调用以实现各种命令输出内容的分屏显示。上面的第一个命令就是利用Shell的管道功能分屏显示file1文件的内容.

(3) less命令

less命令是more命令的改进版,比more命令的功能强大。more命令只能向下翻页,而less命令可以向下、向上翻页,甚至可以前、后左、右移动。

执行less命令后,进入less状态, 按 Enter键可以向下移动一行;按 Space键可以向下移动一页;
按b键可以向上移动一页,也可以用光标键向前、后、左、右移动; 按q键可以退出less命令

less命令还支持在一个文本文件中进行快速查找。先按下斜杠键/,再输入要查找的单词或字符。
less命令会在文本文件中进行快速查找,并把找到的第一个搜索目标高亮显示。如果希望继续查找,就再次按下斜杠键/,再按 Enter键即可
less命令的用法与more基本相同,下面举例说明。本例的前提条件是已经安装了 httpd,
httpdh服务,否则需要先安装httpd服务。安装httpd服务的步骤如下:
如果能够连接互联网,并且有较高网速,可以直接使用系统自带的yum源文件,不需要单独编辑yum源文件。这时请直接跳到步骤(3),而忽略前两步。
提示后面在使用yum安装软件时也依据此原则,不再赘述。

(1)	挂载ISO安装镜像。
[root@server1 ~]#mkdir /iso
[root8server1~] #mount /dev/cdrom /iso

(2)	制作用于安装的yum源文件(后面的所有项目的yum源不再赘述)
先删除/ete/yum.repos.d/目录下的所有文件,编辑生成/etc/yum. repos.d/dvd.repo文件。
[root@server1~]#cd /ete/yum. repos.d/ 
[root@server1 yum. repos. d] #rm * . *
[root@server1 yum. repos.d] #vim /etc/yum. repos. d/dvd. repo
源文件的内容如下。
#/etc/yum. repos.d/dvd.repo
 # or for ONLY the media repo, do this:
yum--disablerepo=\*--enablerepo=c6-media [command]
[dvd] 
name=dvd
baseurl=file: ///iso 
gpgcheck=0 
enabled=1

(3)	使用yum命令安装  httpd软件包。
[root@server1 yum. repos. d]#cd 
[rooteserver1~]#yum clean all /安装前先清除缓存
[rooteserver1~]# yum install httpd-y

(4)	使用less命令
//以分页方式查看 httpd. conf文件的内容
 [root@serve1~]#less/etc/httpd/cont/httpd.conf

(4) head命令

head命令用于显示文件的开头部分,默认情况下只显示文件的前10行内容。 该命令的语法为: head [参数] 文件名
head命令的常用参数选项如下。
-n num:显示指定文件的前num行。
-c num:显示指定文件的前num个字符。

例如:
	[root@server1 ~ ] #head -n 20/etc/httpd/conf/httpd. conf//显示httpd.conf文件的前20行

(5) tail命令

tail命令用于显示文件的末尾部分,默认情况下只显示文件的末尾10行内容。 该命令的语法为: tail [参数] 文件名
tail命令的常用参数选项如下。
-n num:显示指定文件的末尾num行。
-c num:显示指定文件的末尾num个字符。
+num:从第num行开始显示指定文件的内容。

例如:
[root@serverl~]#tail-n 20 /etc/httpd/ conf/ httpd. conf // 显示httpd.conf文件的末尾20行

tail命令最强大的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,该功能特别有用,此时的命令格式为“tail-f文件名”。

3、目录操作类命令

(1) mkdir命令

mkdir命令用于创建一个目录。该命令的语法为: mkdir [参数] 目录名 上述目录名可以为相对路径,也可以为绝对路径。
mkdir命令的-p参数表示在创建目录时,果父目录不存在,则同时创建该目录及该目录的父目录。

例如:
 [root@serverl ~]#mkdir dir1	//在当前目录下创建dir1子目录
 [root@serverl ~]#mkdir -p dir2/subdir2 
//在当前目录的dir2目录中 subdir2创建dir2子目录。如果dir2目录不存在,则同时创建

(2) rmdir命令

rmdir命令用于删除空目录。该命令的语法为: rmdir [参数] 目录名
上述目录名可以为相对路径,也可以为绝对路径。但所删除的目录必须为空目录。
rmdir命令的-p参数表示在删除目录时一起删除父目录,但父目录中必须没有其他目录及文件。

例如:
[root@server1~]# rmdir dir1	//在当前目录下删除dir1空子目录
[root@server1~] #rmdir-p dir2/subdir2
//删除当前目录中的dir2/subdir22子目录。删除 subdir22目录时,如果dir2目录中无其他目录,则一起被删除

4、熟练使用 cp命令

(1) cp命令的使用方法

cp命令主要用于文件或目录的复制。该命令的语法为: cp [参数] 源文件 目标文件
cp命令的常用参数选项如下。
-a:尽可能将文件状态、权限等属性按照原状予以复制。
-f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。
-i:如果目标文件或目录存在,提示是否覆盖已有的文件
-r:递归复制目录,即包含目录下的各级子目录。

(2) 使用cp命令的范例

复制(cp)这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是-a、-p选项,对于不同身份来说差异非常大。

[例2-1]

	用root身份将家目录下的. bashre复制到/tmp下,并更名为bashre。
	[root@server1 ~ ]#cp ~/ .bashrc /tmp/bashrc
	[root@server1 ~]#cp -i~/.bashrc /tmp/bashrc
	cp: overwrite /tmp/bashrc ' ? n不覆盖,y为覆盖
	//重复做两次,由于/tmp下已经存在bashrc了,加上-i选项后,则在覆盖前会询问使用者是否确定。可以按下n或者y进行第二次确认
[例2-2]

	变换目录到/tmp,并将/var/log/wtmp复制到/tmp且观察属性。
	[root@serverl ~ ]#cd /tmp
	[root@serverl tmp]#cp /var/1og/wtmp . //想要复制到当前目录,最后的“."”不要忘记
	[root@server1 tmp]#ls -1 /var/1og/wtmp wtmp
	一rw-rw-r--1 root utmp 96384 Sep 24 11:54/var/1og/wtmp
	一rw-r--r--1 root root 96384 Sep 24 14:06 wtmp
	//注意上面的特殊字体,在不加任何选项复制的情况下,文件的某些属性/权限会改变。这是个很重要的特性,连文件建立的时间也不一样了,要注意
	那如果你想要将文件的所有特性都一起复制过来该怎 么办呢?可以加上-a,如下 所示。
	[rooteserver1 tmp]#cp -a /var/1og/wtmp wtmp_2
	[rootEserver1 tmp]#ls -1 /var/1og/wtmp wtmp_2
	-rw-rw-r--1 root utmp 96384 Sep 24 11:54/var/1og/wtmp
	-rw-rw-r--1 root root 96384 Sep 24 11:54 wtmp_2

cp的功能很多。由于我们常常会进行一些数据的复制,所以也会常常用到这个指令。
-般来说,如果复制别人的数据(当然,你必须要有read 的权限)时,总是希望复制到的数据最后是自己的。 所以,在预设的条件中,cp的源文件与目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。
举例来说,例2-2中由于是root的身份,因此复制过来的文件拥有者与群组就改变成为root所有。
由于具有这个特性,因此在进行备份的时候,某些需要特别注意的特殊权限文件,
例如密码文件(/etc/shadow)以及一些配置文件,就不能直接以cP来复制,而必须要加上-a或-p等属性。
如果你想要复制文件给其他使用者,也必须要注意到文件的权限(包含读、写、执行以及文件拥有者等);否则,其他人还是无法针对你给的文件进行修改。

[例2-3]
	
	复制/etc/这个目录 下的所有内容到/tmp里面。
	[root@server1 tmp]#cp /etc /tmp
	cp:omitting directory' /etc'	//如果是目录,则不能直接复制,要加上-r选项
	[root@server1 tmp]#cp -r /etc /tmp
	//还是要再次强调:加上-r选项可以复制目录,但是文件与目录的权限可能会被改变,所以也可以利用cp-a/etc/tmp命令,尤其是在备份的情况下
[例2-4]

	若~/. bashrc比/tmp/ bashre新,就复制过来。
	[rootserver1 tmp]#cp -u ~/ .bashre / tmp/bashrc
	//-u的特性是在目标文件与来源文件有差异时才会复制, 所以常被用于“备份”的工作当中
	思考:你能否使用bobby身份完整地复制/var/log/wtmp文件到/tmp下面,并更名为bobby_ wtmp呢?
	参考答案:
	[bobby@server1 ~]$cp -a /var/1og/wtmp / tmp/bobby_ wtmp
	[bobby@serverl ~ ]$1s -1 /var/1og/wtmp /tmp/bobby_ wtmp

5、文件操作类命令

(1) mv命令

mv命令主要用于文件或目录的移动或改名。该命令的语法为: mv [参数] 源文件或目录 目标文件或目录
mv命令的常用参数选项如下。
-i:如果目标文件或目录存在时,提示是否覆盖目标文件或目录。
-f: 无论目标文件或目录是否存在,直接覆盖目标文件或目录,不提示。

例如:
//将当前目录下的testa文件移动到/usr/目录下,文件名不变
[rooteserverl ~]#mv testa /usr/
///usr/testa文件移动到根目录下,移动后的文件名为tt
[root@serverl ~]#mv /usr/testa /tt

(2) rm命令

rm命令主要用于文件或目录的删除。该命令的语法为: rm [参数]文件名或目录名
rm命令的常用参数选项如下。
-i:删除文件或目录时提示用户。
-f:删除文件或目录时不提示用户。,落关斑维如间本科文个西立数于限令命ad
-R:递归删除目录,即包含目录下的文件和各级子目录。

例如:
//删除当前目录下的所有文件,但不删除子目录和隐藏文件
[rooteserver1 ~ ] #mkdir /dir1 ; cd /dir1
[rooteserver1 dir1]#touch aa.txt bb. txt; mkdir subdir11;11
[rooteserver1 dir1]#rm *
//下行删除当前目录下的子目录subdirll,包含其下的所有文件和子目录,并且提示用户确认
[root@server1 dir]#rm- iR subdir11

(3) touch 命令

touch命令用于建立文件或更新文件的修改日期。该命令的语法为: touch [参数] 文件名或目录名
touch命令的常用参数选项如下。
-d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。
-a:只把文件的存取时间改为当前时间。
-m:只把文件的修改时间改为当前时间

例如:
[root@server1 ~ ]#touch aa		 //如果当前目录下存在aa文件,则把aa文件的存取和修改时间改为当前时间。如果不存在aa文件,则新建aa文件
[root@sever1 ~]1#touch -d 20180808 aa		//将aa文件的存取和修改时间改为2018年8月8日

(4) diff命令

Diff命令用于比较两个文件内容的不同。该命令的语法为: Diff [参数] 源文件目标文件
diff命令的常用参数选项如下。
将所有的文件当作文本文件处理。
-b: 忽略空格造成的不同。
-B:忽略空行造成的不同。
-q:只报告什么地方不同,不报告具体的不同信息。
-i:忽略大小写的变化。

例如(aa bb aa.txt bb. txt文件在root家目录下使用Vim提前建立好 )[root@serverl ~ ]#diff aa.txt bb. txt
//比较aa.txt文件和bb.txt文件的不同

(5) ln命令

In命令用于建立两个文件之间的链接关系。该命令的语法为: ln [参数]源文件或目录链接名
In命令的常用参数-s用于建立符号链接(软链接),不加该参数时建立的链接为硬链接。
两个文件之间的链接关系有两种:一种称为硬链接;另一种称为符号链接。

(1)硬链接。这时两个文件名指向的是硬盘上的同一块存储空间,对两个文件中的任何一个文件的内容进行修改都会影响到另一个文件。它可以由In命令不加任何参数建立。

利用ll命令查看家目录下aa文件的情况。
[root@server1 ~]#11 aa
-rw-r--r-- 1 root root 0 1月31 15:06 aa
[root@server1 ~]#cat aa
this is aa
由上面命令的执行结果可以看出a8文件的链接数为1,文件内容为“this is a”"
使用In命令建立aa文件的硬链接bb。
[root@server1 ~ ]#In aa bb
上述命令产生了bb新文件,它和aa文件建立起了硬链接关系。
[root@server1 ~ ]#11 aa bb
-rw-r--r-- 2 root root 11  1 月31 15:44 aa
- rw-r--r—2 root root 11  1月31 15:44 bb
[rootoserver1 ~ ]#cat bb
this is aa

可以看出,aa和bb的大小和内容均相同。 再看详细信息的第2列,原来aa文件的链接数为1,说明这块硬盘空间只有aa文件指向;
而建立起aa和bb的硬链接关系后,这块硬盘空间就有aa和bb两个文件同时指向它,所以aa和bb的链接数都变为2。
此时,如果修改aa或bb任意-一个 文件的内容,另外一个文件的内容也将随之变化。 如果删除其中一个文件(不管是哪一个),就是删除了该文件和硬盘空间的指向关系,该硬盘空间不会释放,另外一个文件的内容也不会发生改变,但是该文件的链接数会减少一个。
只能对文件建立硬链接,不能对目录建立硬链接。

(2)符号链接。这种链接也称为软链接,是指一个文件指向另外一个文件的文件名。符号链接类似于Windows系统中的快捷方式。符号链接由ln-s命令建立。

首先查看一下aa文件的信息。
[rootaserver1 ~]#11 aa
- rw-r--r-- 1 root root 11		1月31 15:44 aa
创建aa文件的符号链接cc,创建完成后查看aa和cc文件的链接数的变化。
[root@server1 ~ ]#ln -s aa cc
[root@server1 ~]#11 aa cc
-rw-r--r-- 1 root root 1  1月31 15:44 aa
1rwxrwxrwx 1 root root 2  1 月31 16:02 cc -> aa
可以看出cc文件是指向aa文件的一个符号链接。
而指向存储aa文件内容的那块硬盘空间的文件仍然只有aa一个文件,cc文件只不过是指向了aa文件名而已,所以aa文件的链接数仍为1。
在利用cat命令查看cc文件的内容时,发现cc文件是一个符号链接文件,就根据cc文件记录的文件名找到aa文件,然后将aa文件的内容显示出来。
此时如果删除了cc文件,对aa文件无任何影响;但如果删除了aa文件,那么ce文件就因无法找到aa文件而毫无用处。

(6) gzip和gunzip命令

gzip命令用于对文件进行压缩,生成的压缩文件以“.gz”"结尾;
而gunzip命令是对以”.gz”结尾的文件进行解压缩。这两个命令的语法为: gzip -v文件名 gunzip -v文件名
其中,-V参数选项表示显示被压缩文件的压缩比或解压时的信息。

例如(在root家目录下):
[root@server1 ~]#cd
[root@server1 ~]#gzip -v initial- setup- ks.cfg
initial-setup- ks.cfg: 53.4% -- replaced with initial-setup- ks.cfg.gz
[root@server1 ~ ]#gunzip -V initial-setup- ks. cfg.gz
initial-setup-ks.cfg.gz: 53.4% -- replaced with initial-setup- ks.cfg

(7) tar命令

tar是用于文件打包的命令行工具,tar命令可以把一系列的文件归档到一个大文件中,也可以把档案文件解开以恢复数据。总的来说,tar命令主要用于打包和解包。tar 命令是Linux系统中常用的备份工具之一。该命令的语法为:
tar [参数] 档案文件 文件列表
tar命令的常用参数选项如下。

-c:生成档案文件。
-v:列出归档、解档的详细过程。
-f: 指定档案文件名称。
-r: 将文件追加到档案文件末尾。
-z:以gzip格式压缩或解压缩文件。
-j:以bzip2格式压缩或解压缩文件。
-d:比较档案与当前目录中的文件。
-x:解开档案文件。

例如(提前用touch 命令在“/”目录下建立测试文件):
[rooteserverl ~]#tar -cvf yy.tar aa tt 	//将当前目录 下的aa和tt文件归档为yy.tar
[root@server1 ~ ]#tar -xvf yy. tar 	//从yy.tar档案文件中恢复数据

//将当前目录下的aa和tt文件归档并压缩为yy.tar.gz
[rooteserver1 ~ ]#tar -czvf yy.tar.gz aa tt
[root@server1 ~ ]#tar -xzvf yy. tar .gz		//将yy.tar.gz文件解压缩并恢复数据
[root@server1 ~ ]#tar -czvf etc.tar.gz /etc		//把/etc目录进行打包压缩

[root@server1 ~ ]#mkdir /root/etc
//将打包后的压缩包文件指定解压到/root/etc
[root@server1 ~]#tar xzvf etc.tar.gz -C /root/etc

(8) rpm命令

rpm命令主要用于对RPM软件包进行管理。RPM软件包是Limux的各种发行版本中应用最内广迈的软件包格式之.学会使用rpm命令对RPM软件包进行管理至关重要。
该命令的语法为:
rpm [参数] 软件包名
rpm命令的常用参数选项如下。
-qa:查询系统中安装的所有软件包。
-q: 查询指定的软件包在系统中是否安装。
-qi: 查询系统中已安装软件包的描述信息。
-ql: 查询系统中已安装软件包里所包含的文件列表。
-qf: 查询系统中指定文件所属的软件包。
-qp: 查询RPM软件包文件中的信息,通常用于在未安装软件包之前了解软件包中的信息。
-i:用于安装指定的RPM软件包。
-v:显示较详细的信息。
-h:以“#”显示进度。
-e:删除已安装的RPM软件包。
-U:升级指定的RPM软件包。软件包的版本必须比当前系统中安装的软件包的版本高才能正确升级。如果当前系统中并未安装指定的软件包,则直接安装。
-F:更新软件包。

例如:

	[rootQserver1 ~ ]# rpm -qa more	//显示系统安装的所有软件包列表
	[root@server1 ~ ]# rpm -q selinux- policy	//查询系统是否安装了selinux-policy
	[rootserverl ~ # rpm -qi selinux-policy / /查询系统已安装的软件包的描述信息
	[rooteserverl ~ ]# rpm -ql selinux policy //查 询系统已安装的软件包里所包含的文件列表
	[rooteserver1 ~]#xpm -qf /etc/passwd	//查询passwd文件所属的软件包
	[root@server1 ~ ]#cd /iso/Packages
	//下面安装软件包,并以“#”显示安装进度和安装的详细信息
	[roottserver1 Packages]#rpm - ivh httpd-2.4.6- 80.e17. centos.x8664. rpm
	[root@server1 Packages]#xpm -Uvh httpd-2.4.6- 80.e17.centos .x8664. rpm 	//升级软件包
	[rooteserverl Packages]#xpm-e httpd-2.4. 6-80.e17.centos.x8664		 //卸载httpd软件包
	卸载软件包时不加扩展名.rpm。如果使用命令rpm -e httpd-2. 4.6-80. el7.centos. x86_ 64- nodeps,则表示不检查依赖性。

(9) whereis命令

whereis命令用来寻找命令的可执行文件所在的位置。该命令的语法为:
whereis [参数] 命令名称
whereis命令的常用参数选项如下。
-b:只查找二进制文件。
-m:只查找命令的联机帮助手册部分。
-s:只查找源代码文件。

例如:
//查找命令rpm的位置
[root@serverl ~ ]#whereis rpm
rpm: /bin/rpm /etc/rpm /usr/lib/ rpm /usr/include/ rpm /usr/share/man/man8/rpm.8.gz

(10) whatis命令

whatis命令用于获取命令简介。它从某个程序的使用手册中抽出一行简单的介绍性文件,帮助用户迅速了解这个程序的具体功能。该命令的语法为:
whatis命令名称

例如:
[root@server1 ~ ]#whatis ls
Ls				(1) – list	directory contents

(11) find命令

find命令用于文件查找。它的功能非常强大。该命令的语法为:
find [路径] [匹配表 达式]
find命令的匹配表达式主要有以下几种类型。
-name filename: 查找指定名称的文件。
-user username: 查找属于指定用户的文件。
-group grpname: 查找属于指定组的文件。
-print: 显示查找结果。
-sizen: 查找大小为n块的文件,一一块为512B.
符号“+n”表示查找大小大于n块的文件
符号”一”表示查找大小于n块的文件:
符号“e”表示在查找大小为n个字符的文件。
-inumn: 查找索引节点号为n的文件。
-type: 在找指定类型的文件。文件类型有: b(块设备文件).c(字符设备文件).d目录)、p(管道文件)、(符号链接文件)、f(普通文件)。
-atimen: 查找”天前被访问过的文件。“+n”表示超过”天前被访问的文件;“-n表示未超过”天前被访问的文件。
-mtime n: 类似于atime,但检查的是文件内容被修改的时间。
-ctimen: 类似于atime,但检查的是文件索引节点被改变的时间。
-perm mode: 查找与给定权限匹配的文件,必须以八进制的形式给出访问权限。
-newer file: 查找比指定文件新的文件,即最后修改时间离现在较近。
-exec command { } ; :对匹配指定条件的文件执行command命令。
-ok command { } ; :与exec相同,但执行command命令时请求用户确认。

例如:

	//在当前目录下查找普通文件,并以长格形式显示
	[root@serverl ~]#find	 .-type 	f	 -exec 	ls	 -1	 {}   \ ;
	///1ogs目录中查找修改时间为5天以前的普通文件并删除。应保证/1ogs目录存在
	[root@server1 ~]#find  /logs -type  f  -mtime 5 -exec rm { }  \;
	///etc/目录下查找文件名以“.conf”结尾的文件
	[root@server1 ~]#find /etc -name  ”* . conf"
	//在当前目录下查找权限为755的普通文件并显示
	[roottserver1 ~]#find  .-type  f  -perm 755  -exec  ls  { }  \;

(12) locate命令

locate命令是Linux系统中用来查找文件的命令。就像在Windows中的搜索一样 ,如果你忘了存储文件的位置或它的名字,可以用它来解决。
例如,如果你有一个关于区块链用例的文档,但是你忘了标题,可以输人locate -blockchain或者通过用星号( * )分隔单词来查找blockchain use cases。

例如:locate -i * blockchain * use * cases *

(13) grep命令

grep命令用于查找文件中包含指定字符串的行。该命令的语法为:
grep [参数] 要查找的字符串文件名
grep命令的常用参数选项如下。
-v:列出不匹配的行。
-c:对匹配的行计数。
-l:只显示包含匹配模式的文件名。
-h:抑制包含匹配模式的文件名的显示。
-n:每个匹配行只按照相对的行号显示。
-i:对匹配模式不区分大小写。
在grep命令中,字符“^”表示行的开始,字符“$”表示行的结尾。如果要查找的字符串中带有空格,可以用单引号或双引号括起来。

例如:

	//在文件passwd中查找包含字符串root的行,如果找到,显示该行及该行前后各2行的内容
	[root@server1 ~ ]#grep -2 root /etc/passwd
	//在passwd文件中搜索只包含root这4个字符的行
	[root@serverl ~ ]#grep "^root$" /etc/passwd

grep和find命令的差别在于: grep是在文件中搜索满足条件的行,而find是在指定目录下根据文件的相关信息查找满足指定条件的文件。

(14) dd命令

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,该命令的语法格式为:
dd [参数]
dd命令是比较重要而且比较有特色的-个命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。当然如果愿意,还可以在复制过程中转换其中的数据。
Linux系统中有一个名为/dev/zero的设备文件,这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为dd命令的输人文件,来生成-个指定大小的文件。
dd命令的参数及其作用如表2-1所示。
表2-1 dd 命令的参数及其作用
参数 作用 参数 作用
If 输人的文件名称 bs 设置每个“块”的大小
Of 输出的文件名称 count 设置要复制“块”的个数

	例如,可以用dd命令从/dev/zero设备文件中取出2个大小为560MB的数据块,然后保存成名为filel的文件。
	在理解了这个命令后,以后就能随意创建任意大小的文件了(做配额测试时很有用)[ root@server1 ~]# dd if= /dev/zero of=file1 count=2 bs= 560M
	记录了2+0的读人
	记录了2+0的写出
	1174405120字节(1 .2GB)已复制,1.12128s,1.0GB/s
	dd命令的功能也绝不仅限于复制文件这么简单。
	如果你想把光驱设备中的光盘制作成iso格式的镜像文件,在Windows系统中需要借助于第三方软件才能做到,
	但在Linux系统中可以直接使用dd命令来压制出光盘镜像文件,将它变成-一个可立即使用的iso镜像。
	[root@serverl ~]#dd if= /dev/cdrom of= RHEL- server-7.0-x8664.iso
	7311360+0 records in
	7311360+0 records out
	3743416320 bytes (3.7GB) copied, 370.758s, 10.1MB/s

二、系统信息类命令

系统信息类命令是对系统的各种信息进行显示和设置的命令。

(1) dmesg命令

dmesg命令用实例名和物理名称来标识连到系统上的设备。dmesg命令也显示系统诊断信息、操作系统版本号、物理内存大小以及其他信息。例如:

[root@server1 ~ ] # dmesg lmore

系统启动时,屏幕上会显示系统CPU、内存、网卡等硬件信息。但通常显示得比较快,如果用户没有来得及看清,可以在系统启动后用dmesg命令查看。

(2) free命令

free命令主要用来查看系统内存、虚拟内存的大小及占用情况,例如:

[root@server1 ~ ]#free 
Total		used	free	  shared	 buff/cache		 available
Mem:	1865284    894144 	  107128    14076  864012     714160
Swap:   4194300      0 		 4194300

(3) date命令

date命令可以用来查看系统当前的日期和时间,例如:
[rootaserverl ~]#date
2016年01月22日星期五15:13:26 CST
date命令还可以用来设置当前的日期和时间,例如:
[root@server1 ~]#date -d 08/08/2018
2018年08月08日星期一00:00:00 CST
注意:只有root用户才可以改变系统的日期和时间。

(4) cal命令

cal命令用于显示指定月份或年份的日历,可以带两个参数,其中年、月份用数字表示;

只有一个参数时表示年份,年份的范围为1~9999;不带任何参数的cal 命令显示当前月份的日历。例如:
[root@server1 ~]#cal 7 2019
七月2019
日	一	二	三	四	五	六
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

(5) clock命令

clock命令用于从计算机的硬件获得日期和时间。例如:
[root@server1 ~ ]# clock
2018年05月02日星期三15时16分01秒一0.253886seconds

三、进程管理类命令

进程管理类命令是对进程进行各种显示和设置的命令。

(1) ps命令

ps命令主要用于查看系统的进程。该命令的语法为:
ps [参数]
ps命令的常用参数选项如下。
-a: 显示当前控制终端的进程(包含其他用户的)。
-u: 显示进程的用户名和启动时间等信息。
-w: 宽行输出,不截取输出中的命令行。
-l: 按长格形式显示输出。
-x: 显示没有控制终端的进程。
-e: 显示所有的进程。
-t n: 显示第n个终端的进程。
例如:

[root@serverl ~ ]#ps -au
USER  PID  %CPU  %MEM  VSZ	RSS		TTY 	STAT 	START	TIME COMMAND
root  2459  0.0  0.2   1956  348  	tty2	 Ss+	09:00   0:00 /sbin/mingetty tty2
root  2460  0.0	 0.2   2260  348    tty3     Ss+	09:00   0:00 /sbin/mingetty tty3
root  2461	0.0  0.2   3420	 348    tty4     Ss+    09:00   0:00 /sbin/mingetty tty4	
root  2462  0.0  0.2   3428  348    tty5     Ss+    09:00   0:00 /sbin/mingetty tty5
root  2463  0.0  0.2   2028  348    tty6     Ss+    09:00   0:00 /sbin/mingetty tty6
root  2895  0.0  0.9   6472  1180   ttyl     Ss+    09:09   0:00      bash

ps命令通常和重定向、管道等命令一起使用,用于查找出所需的进程。
输出内容的第一行的中文解释(自左向右)是:进程的所有者;进程ID号;
运算器占用率;内存占用率;
虚拟内存使用量(单位是KB);占用的固定内存量(单位是KB);
启动进行的终端名;所在终端进程状态;被启动的时间;
实际使用CPU的时间;命令名称与参数等。

(2) pidof 命令

pidof命令用于查询某个指定服务进程的PID值,语法格式为:
pidof  [参数]  [服务名称]
每个进程的进程ID号(PID)是唯- -,因此可以通过PID来区分不同的进程。例如,可以使用以下命令来查询本机上sshd服务程序的PID。
[root@l RHEL7-1 ~ ]#pidof sshd
11 61

(3) kill命令

前台进程在运行时,可以用Ctrl+C组合键来终止它,但后台进程无法使用这种方法终止,此时可以使用kill 命令向进程发送强制终止信号,以达到目的。例如:

[rootQserverl dir1]#kill - 1
1) SIGHUP		2) SIGINT		3) SIGQUIT		4) SIGILL
5) SIGTRAP		6) SIGABRT		7) SIGBUS		8) SIGFPE
9) SIGKILL		10) SIGUSR1		11) S IGSEGV	12) SI GUSR2
13) SIGPIPE		14) SIGALRM		15) SIGTERM		16) SIGCHLD
17) SIGCONT		18) SIGSTOP		19) SIGTSTP		20) SIGTTIN
21) SIGTTou		22) SIGURG		23) S IGXCPU	24) SIGXFSZ
25) SI GVTALRM  26) SIGPROF		27) SIGWINCH	28) SIGIO
29) SIGPWR		30) SIGSYS		31) SIGRTMIN	32) S IGRTMIN+ 1
上述命令用于显示kill命令所能够发送的信号种类。每个信号都有一个数值对应,例
SIGKILL信号的值为9。
kill命令的语法格式为: 
kill	[参数	]进程1进程2...
参数选项-s一般跟信号的类型。
例如:
[root@serverl ~ ]#ps
PID 		TTY		T IME		CMD
1448	 pts/1	00:00:00 	bash
2394 	pts/1 	00:00:00 	ps
[root@serverl ~ ]#kill -s sigkill 1448 (或者kill -9 1448)/1结束bash进程并关闭终端

(4) killall命令

kilal命令用于终止菜个指定名称的服务所对应的全部进程,该命令的语法格式为:
killall [参数] [进程名称]
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用klll命令来批量结束某个服务程序带有的全部进程。
下面以htpd服务程序为例来结束其全部进程。
由于RHEL 7系统默认没有安装httpd服务程序,因此大家此时只须看操作过程和输出结果即可,等学习了相关内容之后再来实践。

[root@RHEL7-1 ~ ]#pidof httpd
135811358013579135781357713576
[root@RHEL7-1 ~ ]#kil1a11 -9 httpd
[root@RHEL7-1 ~ ]#pidof httpd
[root@RHEL7-1 ~]#

如果在系统终端中执行一个命令后想立即停止它,可以按下Ctrl+C组合键(生产环境中比较常用的一个快捷键),这样将立即终止该命令的进程。
或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&符号,这样命令将进入系统后台来执行。

(5) nice命令

Linux系统有两个和进程有关的优先级。用“ps -1”命令可以看到两个域: PRI和NIPRI是进程实际的优先级,它是由操作系统动态计算的,
这个优先级的计算和NI值有关NI值可以被用户更改,NI值越高,优先级越低。
一般用户只能加大NI值,只有超级用户才可以减小NI值。NI值被改变后,会影响PRI。优先级高的进程被优先运行,默认时进程的NI值为0。
nice 命令的用法如下:
nice -n程序名 //以指定的优先级运行程序
其中,n表示NI值,正值代表NI值增加,负值代表NI值减小。

例如:
[root@serverl ~]#nice --2 Ps -1

(6) renice命令

renice命令是根据进程的进程号来改变进程的优先级的,该命令的用法如下:
renice n进程号
其中,n为修改后的NI值。

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LW++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值