liunx
前言
上篇有关linux命令的文章中有提到用户的切换,那么,当你新创建一个虚拟机的时候,系统会提示你创建一个用户以便登录系统,而该用户就在home目录下。而该用户的权限是不受限的
而在linux中就有一个超级管理员:root;拥有着系统的最大权限。
root用户
root用户的切换:su - root
密码默认为123456
通过输入exit
退回到普通用户
提示鉴定故障时 输入 sudo passwd root来初始化root密码
su命令
切换用户
语法:su [-] [用户]
其中 - 建议带上,表示切换时加载环境变量
用户也可以省略,默认切换到root用户
exit命令
退回到上一个用户
语法:exit
也可以用快捷键Ctrl+d
来达到相同效果
不建议长期使用root用户来操作系统,以免发生不可挽回的事件。可以使用sudo命令来短暂获得root权限
sudo命令
为普通命令授权,临时以root身份执行命令
语法:sudo 其他命令
使用sudo前,需要为普通用户配置sudo认证:
以root用户执行visudo命令进入文件编辑模式,该文件就是/etc/sudoers
在文件的最后添加:
用户名 ALL=(ALL) NOPASSWD: ALL
最后wq保存即可
用户
linux可以有多个用户以及多个用户组,用户也可存在于多个用户组中
所以linux对用户的权限有两个级别:
- 对用户的控制
- 对用户组的控制
关于用户组的命令:
groupadd 用户组名
创建用户组groupdel 用户组名
删除用户组
关于用户的命令:useradd [-g -d] 用户名
创建用户- -g 指定用户的组并加入,不指定则创建同名组并加入
- -d 指定用户的HOME路径,默认HOME目录:/home/用户名
userdel [-r] 用户名
删除用户- -r 同时删除用户的home目录
id [用户名]
查看用户所属组usermod -aG 用户组 用户名
将指定的用户加入到用户组中
getent命令
getent可以用来查看系统中有哪些用户
getent passwd
查看系统中有哪些用户
列出的结果中有7份信息:
用户名:密码(X):用户id:用户组id:描述信息(无用):HOME目录:执行终端(默认bash)
getent group
查看系统中有哪些用户组
包含3份信息
组名称:组认证(X):组id
权限
- 序号1,表示文件、文件夹的权限控制信息
- 序号2,表示文件、文件夹所属用户
- 序号3,表示文件、文件夹所属用户组
权限控制信息:1+3+3+3 = 10位
drwxr-xr-x
RWX:读 写 执行
修改权限控制信息命令chmod
语法 chmod [-R] 权限 文件或文件夹
- -R 对文件夹内部内容应用同样操作
- 权限参数为u g o(User Group Other) 例如:u=rwx,g=rx,o=x
实例
chmod u=rwx,g=rx,o=x test.txt 将test.txt文件权限修改为rwxr-x–x
可以用数字来简写权限。如 chmod 751 test.txt
其中:r记为4,w记为2,o记为1 (类似二进制)
751:421–7,41–5,1–1:rwxr-x–x
修改权限用户和用户组命令chown
语法:chown [-R] [用户][:][用户组] 文件或文件夹
只能用root权限来执行
- 选项,-R,同chmod,对文件夹内全部内容应用相同规则
- 选项,用户,修改所属用户
- 选项,用户组,修改所属用户组
- : 用于分隔用户和用户组
实例 - chawn root hello.txt,将hello.txt所属用户修改为root
- chawn :root hello.txt,将hello.txt所属用户组修改为root
linux的各类小技巧
ctrl+c
强制停止ctrl+d
退出或登出(不能退出vi/vim)history
命令,查看历史输入过的命令!命令前缀
会从新到旧找到前缀的命令并执行ctrl+r
输入内容去匹配历史命令并执行,回车直接执行,左右键得到此命令不执行ctrl+l
或clear
命令 清屏
linux软件安装
CentOS用yum
Ubuntu用apt
Linux命令行内的“应用商店”
yum : RPM包软件管理器(.rpm文件),用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法: yum [-y] [install | remove | search] 软件名称
- 选项:-y,自动确认,无需手动确认安装或卸载过程
- install :安装
- remove :卸载
- search :搜索
例如:yum -y install wget
yum命令需要root权限哦,可以su切换到root,或使用sudo提权。
yum命令需要联网
linux中命令也是程序
systemctl命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制︰启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为︰服务
语法:systemctl start l stop l status l enable l disable 服务名
- start启动
- stop关闭
- status查看状态
- enable开启开机自启
- disable关闭开机自启
系统内置的服务比较多,比如∶ - NetworkManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd , ssh服务(FinalShell远程登录Linux使用的就是这个服务)
部分软件安装后没有自动集成到systemctl中,也就是不支持systemctl命令控制。此时我们可以手动添加。
软连接
ln命令创建软连接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。类似Windows系统中的《快捷方式》
语法:ln -s 参数1参数2
- -s选项,创建软连接
- 参数1:被链接的文件或文件夹。参数2∶要链接去的目的地实例:
例如
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
时间,时区
通过date命令可以在命令行中查看系统的时间
语法: date [-d] [+格式化字符串]
- -d按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y年
- %y年份后两位数字(00…99)
- %m月份(01…12)
- %d 日(01…31)
- %H小时(00…23)
- %M分钟(00…59)
- %S秒(00…60)
- %s自 1970-01-0100:00:00 UTC到现在的秒数
例如:date “+%Y-%m-%d %H:%M:%S”
-d选项,可以按照给定的字符串显示日期,一般用于日期计算
date -d "+1 day” +%Y%m%d #显示后一天的日期
date -d "-1 day” +%Y%m%d #显示前一天的日期
date -d “-1 month” +%Y%m%d #显示上一月的日期
date -d”+1 month”+%Y%m%d #显示下一月的日期
date -d "-1 year” +%Y%m%d #显示前一年的日期
date -d “+1 year” +%Y%m%d #显示下一年的日期
其中支持的时间标记为︰
- year年
- month月
- day天
- hour小时
- minute分钟
- second秒
-d选项可以和格式化字符串配合一起使用哦
修改linux时区
系统默认时区非中国的东八区。
使用root权限,执行如下命令,修改时区为东八区时区
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可
可以下载安装ntp程序来自动校准时间 yum -y install ntp
ntp也是服务,需要systemctl来启动
ntp手动校准:ntpdate -u ntp.aliyun.com
linux ip主机
ifconfig
可以通过命令: ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装:yum -y install net-tools
ens33:主网卡。
主机名:
hostname
得到linux系统主机名
可以使用命令: hostnamectl set-hostname 主机名
,修改主机名(需root )
linux系统的本地ip地址记录:/etc/hosts
Windows系统:C:\Windows\System32\drivers\etc\hosts文件
虚拟机配置固定IP
当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
DHCP:动态获取IP地址,即每次重启设备后都会获取一次(因为有缓存的存在,普通的电脑重启并不会更改ip),可能导致IP地址频繁变更
配置固定IP需要2个大步骤:
1.在VMware Workstation (或Fusion )中配置IP地址网关和网段(IP地址的范围)
2.在Linux系统中手动修改配置文件,固定IP
选择VMnet8
现在进行第二步,在Linux系统中修改固定IP
- 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,填入如下内容
- 执行 : systemctl restart network重启网卡,执行ifconfig即可看到ip地址固定为192.168.88.130了
ping命令
可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法: ping [-c num] ip或主机名
- 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
- 参数: ip或主机名,被检查的服务器的ip地址或主机名地址
wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url
- 选项: -b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件。
- 参数:url,下载链接
curl命令
curl可以发送http网络请求,可用于∶下载文件、获取信息等
语法: curl [-o] url
- 选项:-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件。
- 参数:url,要发起请求的网络地址
端口
计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通
Linux系统可以支持65535个端口,这6万多个端口分为3类进行使用:
- 公认端口∶1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口非特殊需要,不要占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序W服务
- 动态端口∶49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
可以通过Linux命令去查看某IP地址端口的占用情况
使用nmap命令,安装nmap : yum -y install nmap
语法:nmap 被查看的IP地址
还可以通过netstat命令,查看指定端口的占用情况
语法 : netstat -anp | grep 端口号
,安装netstat : yum -y install net-tools
linux进程管理
可以通过ps命令查看Linux系统中的进程信息
语法: ps [-e -f ]
- 选项: -e,显示出全部的进程
- 选项:-f,以完全格式化的形式展示信息(展示全部信息)一般来说,
- 固定用法就是: ps -ef 列出全部进程的全部信息
从左到右分别是︰ - UID:进程所属的用户ID
- PID:进程的进程号ID
- PPID:进程的父ID(启动此进程的其它进程)
- C:此进程的CPU占用率(百分比)
- STIME:进程的启动时间
- TTY︰启动此进程的终端序号,如显示?,表示非终端启动
- TIME:进程占用CPU的时间
- CMD∶进程对应的名称或启动路径或启动命令
一般可以使用管道符配合grep来进行过滤,
如:ps -ef | grep tail
,即可准确的找到tail命令的信息
关闭进程
在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。
同样,在Linux中,可以通过kill命令关闭进程。
语法:kill [ -9] 进程ID
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的
处理机制。
linux主机状态
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
默认每5秒刷新一次,
语法∶直接输入top即可,按q或ctrl + c退出
- 第一行🔝命令名称,14:50:14:当前系统时间,up 41 min:启动了41分钟,4 users : 4个用户登录,load : 1、5、15分钟的平均负载
- 第二行:Tasks进程信息 : 148个进程,5 running : 5个进程子在运行,143 sleeping : 143个进程睡眠,0个停止进程,0个僵尸进程
- 第三行 :%Cpus : CPU使用率, us : 用户CPU使用率, sy :系统CPU使用率,ni:高优先级进程占用CPU时间百分比, id :空闲CPU率,wa : lO等待CPU占用率, hi :CPU硬件中断率,si :CPU软件中断率,st:强制等待占用CPU率
- 第四、五行 :
Kib Mem :物理内存,total :总.量,free :空闲,used :使用,buff/cache : buff和cache占用
KibSwap:虚拟内存(交换空间) , total :总量,free:空闲,used :使用, buff/cache : buff和cache占用
进程信息:
- PID:进程id
- USER:进程所属用户
- PR:进程优先级,越小越高
- Nl:负值表示高优先级,正表示低优先级VIRT:进程使用虚拟内存,单位KB
- RES:进程使用物理内存,单位KBSHR :进程使用共享内存,单位KB
- S :进程状态(S休眠,R运行,z僵死状态,N负数优先级,l空闲状态)
- %CPU:进程占用CPU率
- %MEM:进程占用内存率
- TIME+:进程使用CPU时间总计,单位10毫秒
- COMMAND:进程的命令或名称或程序文件路径
top命令也支持选项:
- -p 只显示某个进程的信息
- -d设置刷新时间,默认是5s
- -c 显示产生进程的完整命令,默认是进程名
- -n 指定刷新次数,比如top -n 3,刷新输出3次后退出
- -b以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top .tmp
- -i不显示任何闲置(idle)或无用( zombie)的进程
- -u查找特定用户启动的进程
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
磁盘信息监控
使用df命令,可以查看硬盘的使用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示
可以使用iostat查看CPU、磁盘的相关信息
语法: iostat [-x] [num1] [num2]
- 选项:-x,显示更多信息
- num1: 数字,刷新间隔,
- num2: 数字,刷新几次
rKB/s :每秒发送到设备的读取请求数
wKB/s :每秒发送到设备的写入请求数
%util :磁盘利用率
网络状态监控
可以使用sar命令查看网络的相关统计( sar命令非常复杂,这里仅简单用于统计网络)
语法: sar -n DEV num1 num2
- 选项:-n,查看网络,
- DEV表示查看网络接口
- num1:刷新间隔(不填就查看一次结束)
- num2:查看次数(不填无限次数)
信息解读中主要看这俩个∶ - IFACE本地网卡接口的名称
- rxKB/S每秒钟接受的数据包大小,单位为KB
- txKB/S每秒钟发送的数据包大小,单位为KB
环境变量
环境变量是操作系统( Windows、Linux、Mac )在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在Linux系统中执行:env命令即可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构,即名称和值,如下图:
环境变量:PATH
使用cd命令时,无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。
env | grep PATH
路径之间用==:==隔开
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行cd命令,就从第二个目录/usx/bin中搜索到了cd命令,并执行
**
符号
∗
∗
在
L
i
n
u
x
系统中,
符号** 在Linux系统中,
符号∗∗在Linux系统中,符号被用于取"变量"的值。
环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。取得环境变量的值就可以通过语法:$环境变量名来取得
比如: echo $PATH
就可以取得PATH这个环境变量的值,并通过echo语句输出出来。
同时也可以用{}包裹起变量名来用在表达式中,如:
自行设置环境变量
Linux环境变量可以用户自行设置,其中分为∶
- 临时设置,语法:
export 变量名=变量值
。 - 永久生效:(配置内容就是临时设置的语法)
- 针对当前用户生效,配置在当前用户的:~/.bashrc文件中
- 针对所有用户生效,配置在系统的:/etc/profile文件中
并通过语法:source配置文件
,进行立刻生效,或重新登录FinalShell生效
自定义环境变量PATH
环境变量PATH这个项目里面记录了系统执行命令的搜索路径。这些搜索路径我们也可以自行添加到PATH中去。
测试:
。在当前HOME目录内创建文件夹,mxenv,在文件夹内创建文件mkhaha。通过vim编辑器,在mkhaha文件内填入: echo哈哈哈
完成上述操作后,随意切换工作目录,执行mkhaha命令尝试一下,会发现无法执行
。修改PATH的值
临时修改PATH : export PATH= P A T H : / r o o t / m y e n v ,再次执行 m k h a h a ,无论在哪里都能执行了或将 e x p o r t P A T H = PATH:/root/myenv,再次执行mkhaha,无论在哪里都能执行了 或将export PATH= PATH:/root/myenv,再次执行mkhaha,无论在哪里都能执行了或将exportPATH=PATH:/root/myenv,填入用户环境变量文件或系统环境变量文件中去
语法:export PATH=**$PATH:**自定义路径
执行:source 配置文件
上传与下载:rz与sz命令
finshell可以直接在文件栏右键上传和下载
命令就有:rz上传,sz下载
首先需要安装:yum -y install lrzsz
sz 文件
下载到默认目录
rz
可直接打开操作框进行上传
但是用命令上传会很慢,通常用finshell工具来上传下载
压缩与解压
市面上有非常多的压缩格式
- zip格式:Linux、Windows、MacOS,常用
- 7zip : Windows系统常用
- rar : Windows系统常用
- tar : Linux、MacOS常用
- gzip : Linux、MacOS常用
现在要学习,如何在Linux系统中操作 : tar、gzip、zip这三种压缩格式
tar命令
Linux和Mac系统常用有2种压缩格式,后缀名分别是: - .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
- .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作
语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
- -c,创建压缩文件,用于压缩模式
- -v,显示压缩、解压过程,用于查看进度-x,解压模式
- -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
- -z ,gzip模式,不使用-z就是普通的tarball格式
- -C,选择解压的目的地,用于解压模式
tar的常用压缩组合有:
tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt压缩到test.tar文件内
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt压缩到test.tar.gz文件内,使用gzip模式
注意∶
- -z选项如果使用的话,一般处于选项位第一个。
- -f选项,必须在选项位最后一个
tar的常用解压组合有:
tar -xvf test.tar
解压test.tar,将文件解压至当前目录
tar -xvf test.tar -C /home/itheima
解压test.tar,将文件解压至指定目录(/home/itheima )
tar -zxvf test.tar.gz -C /home/itheima
以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima )
注意∶
- -f选项,必须在选项组合体的最后一位
- -z选项,建议在开头位置
- -C选项单独使用,和解压所需的其它参数分开
zip命令压缩文件
可以使用zip命令,压缩文件为zip压缩包
语法:zip [-r] 参数1 参数2 ... 参数N
选项: -r, 被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
示例∶
zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt压缩到test.zip文件内. zip -r test.zip test gzd a.txt
将test、gzd两个文件夹和a.txt文件,压缩到test.zip文件内
unzip命令解压文件
使用unzip命令,可以方便的解压zip压缩包
语法: unzip [-d] 参数
选项: -d,指定要解压去的位置,同tar的-C选项。
参数,被解压的zip压缩包文件
示例:
- unzip test.zip,将test.zip解压到当前目录
- unzip test.zip -d /home/gzd,将test.zip解压到指定文件夹内(/home/gzd)