02-CentOS7基础

基础知识介绍

shell

shell俗称壳,它包裹在内核的外面,是用户命令的翻译官。
作用:接收用户的命令,翻译后(处理一下)交给Linux内核处理。
命令 -> shell -> 内核 -> CPU
目前,CentOS默认的shell叫bash。还有其他的shell,如zsh,fish,csh。
不同的shell的命令会有所差别,这就是Ubuntu和CentOS等不同操作系统命令不一样的原因。

bash        #进入一层shell
bash        #再进入一层shell
exit        #退出当前shell
命令的基本格式
  • 一般的命令组成:
                【命令名称+命令参数+命令对象】

比如【 cp -a 123.txt 456.txt 】中:

cp为命令名称
-a为命令参数
123.txt和456.txt为命令对象,即操作对象
  • 命令参数
-a	-只能跟单个字母
--help	--可以跟一个单词

如果参数为一个字母,使用-
如果参数是一个单词,使用–

  • 逻辑运算符
命令1  &&  命令2	#短路与(命令1执行失败后不再执行命令2)
命令1  ||  命令2	#短路或(命令1执行成功后不再执行命令2)
  • 命令结束符
命令1  ;  命令2	#执行完命令1后执行命令2(就像是&,而不是短路与)
  • 后台执行命令
命令1  &		#后台运行命令1

比如:
ping -c 20 www.baidu.com &
  • 多行输入命令
命令1  参数1 参数2 \
参数3 \
参数4		#相当于【命令1  参数1 参数2 参数3 参数4】

比如:
ping \
-c 20 \
www.baidu.com   相当于ping -c 20 www.baidu.com
使用帮助

有的时候,我们会忘记命令的意思。查看帮助可以让我们快速找到关于命令的详细解释。

  • help帮助
ls --help       #查看ls有关的帮助
  • man手册
man ls          #查看ls有关的帮助
#使用技巧:
#   按q退出
#   输入/hello表示搜索字符串"hello",按n查找下一个匹配项,按N查找上一个匹配项。
隐藏文件

在Linux中,以.开头的文件为隐藏文件,使用ls和ll无法查看到。
我们使用ls -a显示所有文件(包括隐藏文件)

补充:文件命名时,除了/,其他字符都合法。


基础命令

echo命令

echo命令用于输出某个字符串或者变量值。

  • 输出字符串
echo "hello world! "	#输出“hello world!”
  • 输出变量值
echo "$name"		#输出变量name的值
  • 强引用和弱引用

双引号为弱引用:“$name”会转化为name的值
单引号为强引用:【echo‘$name’】会输出$name,而不是name的值

[root@localhost ~]# name="郭飞"         #定义变量name
[root@localhost ~]# echo "$name"        #输出name的值
郭飞
[root@localhost ~]# echo '$name'        #输出$name
$name
[root@localhost ~]# 
查看文件
  • cat命令
cat 123.txt     #查看文件123.txt的内容
    -n      #输出行号
  • more和less命令

背景:

用cat会显示文件全部内容,出现的问题:如果文件很大,就会全部输出,覆盖掉我们之前的输出。

more /var/log/boot.log      #查看启动日志
    #先显示前面的部分,并且告知显示的进度。
    #按Enter显示下一行
    #按空格显示下一页
    #按q退出
参数:
    -3      #从前3行开始显示
less 123.txt	#用于查看较长文档(与more不同的是,less可上下翻页)
    -3		#从第3行开始显示
  • head和tail命令
head -4 123.txt  	#显示前4行内容
tail -4 123.txt 	#显示后4行内容
tail +4 123.txt 	#显示第4行开始到最后一行的内容
tail -f /var/log/messages	#跟踪显示末尾内容(常用作跟踪日志文件)
  • ls命令
ls dir1	#查看dir1目录下文件
ls -l dir2	#查看dir2目录下文件,并显示详细信息(相当于ll命令)

参数:
    -l	#显示详细信息
    -h	#智能显示文件大小(单位转换)
    -a	#显示所有文件(包括隐藏文件)
find命令

用于文件搜索
相当于Windows中资源管理器右上角的文件搜索

#使用方法:
find <查找路径>  <选项> <参数>

#举例:
find /etc -name “pass*”	#查找/etc目录下名称以pass开头的文件
find  /  ‐user jay  ‐exec  cp  ‐a  {}  /root/  \;	#查找用户为jay的文件复制到/root/目录下

#参数:
-user	    #指定文件属主
-exec	    #指定查找完后的shell操作
-name	    #按名称查找(区分大小写)
-iname	    #按名称查找(不区分大小写)
-regex	    #用正则表达式匹配
-iregex	    #忽略大小写用正则表达式匹配
-size +3G   #查找大于3G的文件
-empty      #查找空文件

#find可以使用组合表达式:
(EXPR)  		改变操作符优先次序
!EXPR  		取反
EXPR1 EXPR2  	短路与
EXPR1 -a EXPR2  	短路与
EXPR1 -o EXPR2  	短路或
cut命令

cut命令可以对文件的内容进行分段。

比如/etc/passwd文件:

#这个文件是以:分隔
squid:x:23:23::/var/spool/squid:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
temp:x:1002:1002::/home/temp:/bin/bash
user1:x:1003:1003::/home/user1:/bin/bash
#如果我想取第3个字段:
cut -f 3 -d ":" /etc/passwd
    -f 3    #输出第3个字段
    -d ":"  #以:分隔
alias

有些命令比较常用,我们就可以对这条命令定义别名。
比如ll命令就是ls -l命令的别名(/etc/profile.d/colorls.sh)

#alias命令使用
alias	#输出所有alias定义
unalias ip	#取消ip这个别名

#临时定义命令别名(重新登录之后就没有了)
alias cat_123='cat 123.txt' 	#将cat_123定义为cat 123.txt的别名

#永久定义命令别名
vim ~/.bashrc	#将alias命令写入此文件(当前用户有效)	
vim /etc/bashrc	#将alias命令写入此文件(所有用户有效)

文件上传和下载

lrzsz

专门用于服务器和终端之间的文件传输。
注意:在物理机上使用此命令无效(非远程连接)。

  • 安装lrzsz
yum -y install lrzsz		#安装lrzsz
  • 上传与下载
rz		#上传文件
sz test.txt	#下载此文件
xftp软件

用于在服务器与远程终端之间的文件上传与下载

  • 优点:

比lrzsz速度快;
能传输大于4G的文件。

  • 下载地址:

https://www.netsarang.com/zh/free-for-home-school/

UTOOLS1583029720043.png
wget

用于从互联网下载文件

  • 安装
yum -y install wget	    #安装wget
  • 下载
wget https://xx.com/xx.txt	#下载文件
    -c	#中断后继续下载(continue)
    -b	#后台下载(background)
    -q	#静默下载,无输出(quiet)
curl

常常用于访问网页,也可用于下载文件

curl www.baidu.com	#访问baidu
curl https://xx.qq.com/qq.exe -o qq.exe	#下载文件并保存为qq.exe

#参数
-o	#输出至文件(即对下载文件命名)
-s	#静默模式(不输出,常在脚本中使用)
-k	#忽略不信任证书

文件打包和压缩

zip和unzip
  • zip

用于将压缩文件为zip格式
压缩后不会删除原文件

#zip <压缩文件名> <压缩文件1> [压缩文件2] [压缩文件3] …
zip file.zip file1 file2	#将file1和file2压缩为file.zip
zip -r file.zip dir/		#递归压缩fir目录下所有文件
  • unzip
yum -y install unzip
unzip file.zip	#解压file.zip到当前目录
gzip和bzip2
  • gzip

对单个文件进行压缩
压缩后原文件会自动删除
压缩后文件为*.gz格式

gzip [<参数>] <需压缩文件>
    -d	#解压
    -v  	#显示执行过程
    -l 	#列出压缩文件信息
    -r	#递归处理此文件夹所有文件
    -5	#压缩率为5,范围为1~9,压缩率越高压缩文件越小
    --fast	#相当于-1,即压缩率为1
    --best	#相当于-9,即压缩率为9
  • bzip2

对单个文件进行压缩
压缩后原文件会自动删除
比gzip压缩比更高
压缩后文件为*.bz2格式
命令与gzip类似

小贴士:

gzip和bzip2用的很少,因为只能对单个文件进行操作。
但是压缩算法很好,所以一般都使用tar间接的调用它们。

tar命令

用于对多个文件进行打包,但不改变文件大小
技巧:bzip2比gzip都只能对单个文件压缩,所以先tar打包再进行压缩

  • 打包
tar -cvf file.tar filename  #打包文件(文件大小不变)
  • 调用gzip和bzip2(先打包后压缩)
-zcvf	#调用gzip压缩和打包文件(*.tar.gz)
-jcvf	#调用bzip2压缩和打包文件(*.tar.bz2
  • 解压和解包

不管是打包文件还是压缩文件,只要接参数-x就行了。(tar会自动检测文件的格式)

tar -xvf test.tar	#释放文件到当前目录
tar -xvf test.tar -C /root  #释放文件到/root目录

系统管理

时间设置
  • 输出时间
date "+%Y-%m-%d %H:%M:%S"   #输出 2020-03-01 11:19:34
    %Y	#4位数年份
    %y	#2位数年份
    %m	#月
    %d	#日
    %H	#时
    %M	#分
    %S	#秒
  • 手动设置时间

不建议手动设置时间,一般使用时间服务器同步。

date -s "2020-01-01 00:00:00"	#设置当前时间
  • 自动同步时间
yum -y install ntpdate
ntpdate cn.pool.ntp.org	#同步当前时间
主机名设置

主机名设置分为永久修改与临时修改
临时修改后,重启会恢复原来的主机名。
不建议临时修改或者经常修改主机名

  • 临时修改
hostname flight		#修改主机名为flight(重新登录有效)
  • 永久修改
#方法1
hostnamectl set-hostname flight	#重新登录有效

#方法2
vim /etc/hostname	#重启有效(所以不建议使用)
    mylinux
内存管理

用于查看内存信息
内存分为物理内存和交换分区
交换分区Swap类似于Windows的虚拟内存,用于解决内存不足的问题

[root@localhost ~]# free -h		#输出当前内存信息
	     total        used        free      shared  buff/cache   available
Mem:           1.8G        325M       86M     96M      1.4G            1.2G
Swap:            0B          0B            0B

参数解释:

参数-h	#智能转换单位
total	#总量
used	#使用量
free	#真正空闲量
shared	#共享的物理内存大小
buff/cache	#缓冲内存大小
available	#可被使用的内存大小(缓冲内存也可被使用)
uptime

查看系统启动时间和负载

[root@localhost ~]# uptime
14:58:09 up 30 days, 16:11,  2 users,  load average: 0.14, 0.05, 0.06

字段解释:

14:58:09            #当前时间
up 30 days, 16:11   #启动30天16小时11分钟
2 users             #当前两个用户登陆
load average        #系统平均负载(分别是最后1,5和15分钟平均负载)
进程管理

在Linux系统中,有5种常见的进程状态,分别为运行®、中断(S)、不可中断(D)、僵死(Z)与停止(T)

  • pidof
pidof  sshd		#查询服务sshd的PID
  • 杀死进程
kill -9 2654	#强制杀死进程
pkill <关键字>	#根据关键字杀死进程(尽量完整防止被误杀)
killall  sshd	#杀死sshd全部进程(安装psmisc)
  • ps命令

用于查看系统中的进程状态
相当于Windows的任务管理器(静态的,只会得到当前时刻的状态)

ps -aux
    -a:显示所有进程
    -u:用户以及其他详细信息
    -x:显示没有控制终端的进程
  • top命令

top命令用于动态地监视进程活动与系统负载等信息(会不停的去获取系统状态)
可以看作是Windows的任务管理器。
top包含3个命令,uptime、free和ps,会动态显示这仨个命令的输出。

[root@localhost ~]# top	#按q退出
UTOOLS1583033533084.png

字段解释:

top - 14:58:09 up 30 days, 16:11,  2 users,  load average: 0.14, 0.05, 0.06
#相当于uptime
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
81 total		#总共81个进程
1 running	#1个进程正在运行
80 sleeping	#80个进程正在休眠
0 stopped	#0个进程停止
0 zombie		#0个僵尸进程
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
us	#进程在用户地址空间中消耗CPU时间的百分比
sy	#进程在内核地址空间中消耗 CPU 时间的百分比
ni	#nice缩写,可通过nice值调整进程用户态的优先级,这里指调整过nice值的进程消耗掉的CPU时间百分比
id	#CPU 处于 idle 状态的百分比
wa	#CPU 等待磁盘 IO 操作的时间
hi & si	#硬中断与软中断消耗时间
st	#虚机等待CPU资源时间(只有Linux作为虚机时才有效)
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    PID	    #进程号
    USER    #运行用户
    PR      #优先级(内核视角)
    NI	    #优先级(用户视角)
    VIRT    #虚拟内存使用量
    RES	    #表示进程使用的物理内存大小
    SHR	    #表示进程使用的共享内存的大小
    S	    #表示当前进程状态(S为sleeping睡眠状态)
    %CPU	#CPU占用百分比
    %MEM	#内存占用百分比
    TIME+	#启动时间
    COMMAND	#启动命令

环境变量

一般是指在操作系统中用来指定操作系统运行环境的一些参数。

  • Linux重要的环境变量
$?	#上一次命令执行结果的状态
        0		#执行成功
        1		#通用错误
        126		#没有执行权限
        127		#命令没有找到
$SHELL	#当前使用Shell(如/bin/bash)
$PATH	#搜索路径
$HOME	#用户家目录
$RANDOM	#随机生成一个整数

举例:

[root@mycentos2 ~]# echo $SHELL     #输出默认的shell
/bin/bash
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $HOME      #输出当前用户的家目录
/root
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $RANDOM    #输出一个随机整数
3449
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $?         #输出上一条命令的执行状态
0
[root@mycentos2 ~]# 
  • 用户自定义环境变量

下面这个例子只对当前终端生效。若需要永久生效,可以写入bashrc文件中。

[root@mycentos2 ~]# name=郭飞
[root@mycentos2 ~]# echo $name
郭飞
[root@mycentos2 ~]#

通配符

通配符和正则表达式类似,都可以做匹配。
正则表达式更多用于文件中字符串匹配,或者代码中的字符串匹配。
通配符专门用于Linux命令中。

*	#匹配所有字符	
?	#匹配任一字符
[]	#产生一个范围
^	#在[]中表示非的意思
{}	#产生一个序列
\	#转义字符

举例:

ll a*	#查看所有a开头的文件
ll a?	#查看a开头+任一字符的文件(如ab,ac,a1)
ll [0-9]*	#查看所有数字开头的文件
ll [^0-9]*	#查看所有非数字开头的文件
touch a{a,b,1}	#创建aa,ab和a1文件
ll a\*.txt	#查看a*.txt文件

重定向

重定向是指将命令的输出保存到文件中。

>	#将输出覆盖到文件中
>>	#将输出追加到文件中
2>	#错误覆盖,若运行错误则将结果覆盖到文件中
2>>	#错误追加,若运行错误则将结果追加到文件中
&>	#都覆盖到文件中
&>>	#都追加都文件中

举例:

echo 123 > 456.txt		#将123覆盖输出到456.txt
echo 123 >> 456.txt 	#将123追加到456.txt中

管道符

管道符的作用是:将命令A的输出作为命令B的输入。用|表示。
如:命令A | 命令B

ll | grep "key"	#将ll的输出结果送给grep命令进行过滤

反引号

反引号在键盘上Tab的上方。
反引号用于命令的替换,先执行``里的命令,再将输出结果替换掉原来的反引号。

[root@ngsoc129 ~]# echo `date`	#相当于echo "Mon Jul 15 15:57:47 CST 2019"
Mon Jul 15 15:57:47 CST 2019

小贴士:

反引号大多用在脚本中
反引号可以嵌套使用,但是在内部中的反引号必须转义处理

Linux文件类型

Linux目录结构
UTOOLS1583046114153.png
Linux文件类型

Linux的哲学思想:一切皆文件。
ll命令第一个字段的第一个字母即为文件类型

-	#普通文件
d	#目录
l	#符号文件l
c	#字符设备
b	#块设备
s	#套接字socket,多用于不同计算机之间通信
p	#命名管道PIPE,用于不同进程之间通信
/dev目录

dev是device的缩写,是设备目录,里面都是设备文件

/dev/sd[a-z]	#SCSI设备(其中sda1表示sda硬盘的第1个分区)
/dev/vd[a-z]	#虚拟SCSI设备(当前机器为KVM或qemu虚拟机)
/dev/null       #空设备(无限接收数据,相当于黑洞)
/dev/zero       #零设备(无限零资源,通常作为输入设备)
/dev/tty[0-63]	#物理机终端
/dev/pts/[0-n]	#远程终端

空设备是一个黑洞,发往它的数据都将不复存在,常用于屏蔽标准输出或错误输出


posted @ 2020-03-01 15:07  NetRookieX  阅读(1)  评论(0编辑  收藏  举报