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/
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退出
字段解释:
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目录结构
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] #远程终端
空设备是一个黑洞,发往它的数据都将不复存在,常用于屏蔽标准输出或错误输出
02-CentOS7基础的更多相关文章
- php从入门到放弃系列-02.php基础语法
php从入门到放弃系列-02.php基础语法 一.学习语法,从hello world开始 PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器&qu ...
- Centos7 基础命令与软件的安装
本人小白一枚正在老男孩培训,所以从现在开始把我学到的知识都分享给大家,该随笔会一直更新 centos7基础命令与软件 ps:命令与参数之间必须加上空格,安装成功时最后一行会有 Complete! ...
- 数据分析02 /pandas基础
数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...
- 26.centos7基础学习与积累-012-文件和目录的属性
从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.文件的属性(文件的信息描述): [root@python01 ~]# ls -l ...
- 24.centos7基础学习与积累-010-上机考核命令练习
从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然 ...
- 20.centos7基础学习与积累-006-软实力-画图
从头开始积累centos7系统运用 亿图是用指南 安装亿图软件 修改基础配置 路径:文件==>选项==>常规 需要修改的参数: 撤销次数:256 自动保存间隔:2分钟 路径:文件==> ...
- 18.centos7基础学习与积累-004-分区理论
1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.常规分区:数据不是特别重要的业务(集群的某个节点) /boot 引导分区 ...
- 17.centos7基础学习与积累-003-命令练习01
1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 linux命令的学习: 创建目录:mkdir mkdir /data mkdir ...
- 15.centos7基础学习与积累-001
1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 做到精通这个操作系统, 互联网常用服务器品牌: dell: 4u ...
- Centos7基础优化操作项
1.基础优化操作项:更新yum源信息第一个:就近使用yum源地址,安装软件更快.curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors. ...
随机推荐
- python 简明笔记
python 简明笔记 基础内置类型 数值类型 字面量 3.14e-10 3.14E-10 3.14e+10 #八进制 0o123 #十六进制 0xabf #二进制 0b10101 #进制转换函数 # ...
- Kafka源码分析(四) - Server端-请求处理框架
系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka. ...
- PPO近端策略优化玩cartpole游戏
这个难度有些大,有两个policy,一个负责更新策略,另一个负责提供数据,实际这两个policy是一个东西,用policy1跑出一组数据给新的policy2训练,然后policy2跑数据给新的poli ...
- java学习之旅(day.10)
重写 前提:需要有继承关系,是子类重写父类的方法,不是属性 重写特点: 方法名必须相同, 参数列表必须相同,否则就变成重载了 修饰符:范围可以扩大,不能缩小(即父类的private的,可以扩大为pub ...
- java学习之旅(day.04)
运算符 算术运算符:+ ,- ,* ,/,%(取余或模运算), ++(自增),-- (自减) 赋值运算符:= 关系运算符:>, <,>=, <=, ==, !=(不等于),in ...
- 可以把erp当做一个分支-找自己的方向
之前一直在寻思自己应该做哪些方面,对所有编程的问题都在研究,又看到自己研究不透.现在,某一时刻看到,可以把erp当做一个分支. 就像游戏里的天赋点一样,进入这个分支... 这是一个专一的方面,和编程普 ...
- 平衡树 Treap & Splay [学习笔记]
平衡树 \(\tt{Treap}\) & \(\tt{Splay}\) 壹.单旋 \(\tt{Treap}\) 首先了解 \(\tt{BST}\) 非常好用的东西,但是数据可以把它卡成一条链 ...
- iis worker process w3wp 进程 占用率100%
今天电脑特别的卡,我没当回事,但是实在是卡得不行了,我打开任务管理器,发现 iis worker process 进程已经快100%了,我之前在iis上发布了一个webservice,我就把这个网站给 ...
- 运算符优先级 JAVA11
**运算符优先级 ** 规律:算术运算符优先级较高,关系和逻辑运算符优先级较低.多数运算符具有左结合性,单目运算符.三目运算符.赋值运算符具有右结合性. 运算符的优先级 举例 使用优先级为 1 的小括 ...
- Hangfire 使用笔记 任务可以分离到别的项目中,无需重复部署Hangfire,通过API方式通信。
"巨人们"的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的 ...