Linux基础命令及部分实验过程
Linux:一切皆文件
##文件系统层级标准(FHS)
##用户和组的管理
1、用户
三种用户:root超级用户(超级管理员)、系统用户、普通用户
华为甘道夫默认用户名:gandalf 默认密码为:IaaS@OS-CLOUD9!
ID+用户名:查询用户所属的uid(user id)、gid(group id)和groups(群组)
超管用户的uid为0,普通用户的uid默认从1000开始递增,1到999是这些uid默认是给系统内部组件及服务来使用的
可以到 /etc/login.defs 里面修改通过useradd新建的用户id或者通过groupadd新建的用户组id,最小是否从1000开始:
#/etc/passwd 用户管理配置文件 字符段对应关系如下:
root超管用户:
普通用户:
当末尾显示/sbin/nologin 的时候,意味着该用户不可以登录操作系统:
用户密码存放文件:/etc/shadow
useradd:添加用户
usermod:修改用户参数
-r 系统用户
-G 添加附加组
userdel:删除用户
-r 代表同时删除创建用户时的主目录和邮箱
不允许登陆:shell /sbin/nologin
2、组
/etc/group 组配置文件 字符段对应关系如下:
xlz :x :1000 :xlz
组名 密码 gid(唯一标识组) 当前组里的用户
基本组:创建一个用户后,若没有指定基本组,则会自动为自己分配一个与uid相同的基本组id
附加组:除基本组之外,用户还可以被分配到其他组
groupadd:创建组
newgrp :登陆组
groupmod:修改组
groupdel:只能删除groupadd添加的组,基本组只能通过删除用户来实现
##快捷键命令
ctrl+Shift+t 开多个终端
ctrl +Shift +“+”字号变大 ctrl+“-”字号变小 // 临时的
想要一直生效 编辑 属性 字号默认的去掉
init 3: 登录到纯字符界面
init 5: 登录到图形界面 (前提是安装了server with GUI)
startx:从字符界面退到图形界面(前提是安装了server with GUI )
关机:1. init 0 2. poweroff 3. shutdown -h now
重启:1. init 6 2. reboot 3.shutdown -r now 4. systemctl reboot
/etc/inittab 默认启动配置文件
启动级别有3和5两个级别
3:代表的是字符界面(命令行)
5:代表的是图形化界面
systemctl get-default //显示系统当前默认的启动方式,graphical.target对应的是级别5 图形界面
systemctl set-default //设置默认的启动方式
如设置系统默认启动方式为字符界面:systemctl set-default multi-user.target
##修改主机名
hostname 主机名 (临时更改)
hostnamectl set-hostname 主机名(永久更改)
##修改用户密码:
passwd 直接敲是修改当前用户的密码,修改其他用户密码在后面加用户名
root用户可以修改所有用户的密码 ,普通用户只能修改自己的密码
passwd -d 用户名 删除该用户的密码
##破解root密码
1、重启 reboot ,在进入系统倒计时的时候按e进入救援系统
2、在Linux16句末尾按空格后输入rd.break(以rd.break打断内核启动的方法重置密码),按ctrl+x进入救援模式
3、mount -o remount,rw /sysroot (以读写的方式重新挂载根给/sysroot读写权限,给跟系统一个读写权限)
4、chroot /sysroot/ (切换到真实的根下面)
5、passwd root (修改root密码,输入两次新密码)
6、touch /.autorelabel (创建一个标签文件)现在是在非正常的救援模式(非常规手段)下,修改了用户密码,所以你需要让系统给你一个认可,让系统知道你修改了用户密码,让系统带着标签和新密码去启动,更新安全策略。
7、exit (退出,让系统进行修改密码)
8、exit
##网卡配置
1、图形界面配置
2、修改网卡的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
修改完成之后,重启服务:systemctl restart network
网关配置文件:/etc/sysconfig/network
DNS配置文件:/etc/resolv.conf
##切换用户更改命令提示符的用户名(switch user):su - 用户名
- 继承切换前的用户环境
//请不要频繁切换用户,否则可能会导致环境异常 可以用exit命令退回之前的用户
##查看当前的工作目录(print work directory):pwd
-P:显示出真实的路径,而非链接路径
##切换目录(change directory):cd
绝对路径:以 / 开始的路径 ,例 cd /home/redhat
相对路径:不是以 / 开始的路径,例 cd home
直接回到当前用户的主(家)目录:cd ~
回到当前目录的上一级目录:cd …
回到当前目录:cd .
切换到上一次的目录:cd -
##列出目录里的内容:ls(list)
ls -l 长列表列出=ll
ls -d 查看当前目录
ls -a 列出隐藏文件,包括.和…
ls -A 列出隐藏文件,不包括.和…
ls -i 显示文件的索引节点号(inode),一个索引节点号代表一个文件。
##通配符
* //代表任意个数个字符
? //代表任意一个字符,至少一个
[] //表示可以匹配字符组中的任意一一个
[abc] //匹配a、b、c中的任意一个
[a-f] //匹配a-f范围内的任意一个字符
##查看和修改时间
date 查看系统时间
date -s “2020/2/5 12:00” 修改系统时间
clock 查看硬件时间
hwclock -w 系统时间附给硬件时间
hwclock -s 硬件时间附给系统时间
ntpdate time.windows.com 同步网络时间
##查看日历cal
cal 月 年 查看X年X月的日历
cal -3 查看上月、本月、下月的日历
##命令设置别名
临时设置别名:
在命令行中输入以下命令来创建一个临时的别名:
alias ll=‘ls -l’ 给ll命令设置别名为ls -l 即执行命令“ll”等于执行“ls -l”
unalias ll 删除ll的别名
永久创建(保存别名到配置文件):
~/.bashrc文件
nano或者vim ~/.bashrc //编辑bashrc文件
alias ll=‘ls -l’ //输入需要设置的别名
ctrl+o 写入
enter 确定
ctrl+x 离开
source ~/.bashrc 让文件生效
##文件类型
- 普通文件
d 目录文件
c 字符设备文件
b 区块设备文件
l 链接文件
p 管道文件
s 套接字文件
使用 ll或者 ls -l 命令可以查看文件的属性,所显示结果的第一列的第一个字符用来表明该文件的文件类型
##Vim文本编辑器
常用快捷键命令 详细快捷键命令
e:跳到下一个字尾E 跳到下一个字尾,长跳
0:跳至行首,不管有无缩进,就是跳到第0个字符
^:跳至行首的第一个字符
$:跳至行尾
gg:跳至文首
G:调至文尾
5gg/5G:调至第5行
dd:删除光标所在行
d/D:删除到行末
3,5 d:删除3-5行
yy:复制一行
2yy:复制光标行和下一行
y/Y:复制到行末
p:粘贴粘贴板的内容到当前行的下面
P:粘贴粘贴板的内容到当前行的上面
dgg:删除光标至文档首部
ctrl+r:重复上一个操作
i:在光标前插入
s:删除光标所在位置并插入
o:在光标所在的下一行插入
wq:保存修改并退出
x:保存修改并退出
q:退出,如果对缓冲区进行过修改,则会提示
q! :强制退出,放弃修改
set nu:显示行号
set nonu:不显示行号
%s /a/b/g:将a替换位b,全局修改
/:所查找内容 查找
r:文件名1 将文件名1的内容读到当前文件中
w:文件名1 另存为文件名1
ctrl+v:块选择
y:将反白的地方复制
d:将反白的地方删除
##文件
创建文件:touch
查看文件:cat 、more、less(比more高级,支持前后翻阅,上下键)、head默认打开文件头部前十行、tail默认打开文件末尾后十行
##目录
创建目录:mkdir+目录名
删除目录:rmdir+目录名
rmdir -p :连同上一级空目录一起删除
##复制 cp
复制文件:cp+文件名
复制目录:cp -r +目录名 //-r 递归
保留源文件属性:cp -p +文件名 (所属主、属组、权限、时间)
##移动 mv
mv+文件名+目标位置 :移动文件
mv aa bb 重命名文件aa
##文本切割 cut
cut -d -f 文件名
-d:指定分隔符
-f:指定截取的列数
##文本排序 sort
sort -n 文件名 按照数字大小排序
sort -n -u 文件名 排序并去重
sort -r 逆序排序
##文本统计 wc
统计指定文件中的字节数、字数、行数
wc -l 统计行数
wc -w 统计单词数
wc -c 统计字节数
##tee
tee命令会从输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
cat haha | tee xixi 将haha文件的内容保存至xixi同时创建xixi文件。
##文本查找
查找文件名 find
find -name
查找文件中的内容 grep
grep h haha 查找haha文件中带h的字符串
grep h ./* 查找当前目录下所有为文件中的h字符,不包含目录文件
grep -r h ./* 查找当前目录下所有文件中的h字符,包含目录文件
grep -w h haha 查找haha文件中带h的完整单词,不是单个的h字符
##查看进程 ps
ps -e 显示后台进程
ps -f 显示详细信息
进程的五种状态码:
D 不可中断
R 运行中
S 中断
T 停止
Z 僵死
几种附加符号含义:
< 高优先级
N 低优先级
L有些页被锁进内存
s 包含子进程
+位于后台的进程组
| 多线程,克隆线程
扩展:
gpasswd:给组设置密码
gpasswd -a maomao group1 将maomao用户添加组group1
gpasswd -M xixi, haha, maomao group1 指定多个用户添加到组group1
gpasswd -d maomao group1 将maomao用户从组group1移除
gpasswd -R group1 锁定group1组,只有组内成员才能进入本组
手动创建用户
(1)添加用户信息,在/etc/passwd/输入用户配置信息
(2)添加组信息
(3)创建用户家目录
(4)复制/etc/skel/的隐藏文件.bash和.mizilla到家目录
3、用户的密码文件
/etc/shadow
参数:以 1天 为单位
-n 最短使用时间
-x 最长使用时间
-w 警告时间
-i 宽限时间
例:passwd -n 2 -x 10 -w 1 -i 3 redhat 指定密码最短使用时间2天,最长使用时间10天,警告时间1天,宽限时间3天
-e 精确时间 通过修改账号
例 :usermod -e 2020-03-20 redhat
##更改文件的所属关系 chown,chgrp
chown xlz 666.txt 修改666.txt文件的所有者为为xlz
chown xlz.xlz666 666.txt 修改666.txt的所有者为xlz,所属组为xlz666
chown xlz:xlz666 666.txt 修改666.txt的所有者为xlz,所属组为xlz666
chown .xlz666 666.txt 修改666.txt的所属组为xlz666
chown -R 递归,连同目录下的所有文件、子目录都更新为新的所有者和所属组
chgrp 只能修改属组
chgrp xlz666 666.txt 修改666.txt的所属组为xlz666
chgrp -R 递归,连同目录下的所有文件、子目录都更新为新的属组
##文件权限控制 chmod
r(读)w(写)x(运行)权限:
对于普通文件:
r–可读取此文件的实际内容(cat查看文件)
w–可编辑此文件的内容(vim,echo),但不具备删除该文件的权限(删除 文件由该文件的上层目录控制,跟文件本身的权限无关)
x–该文件具有可以被系统执行的权限
对于目录文件:
r–具有读目录结构列表的权限,可以查询该目录下的文件名数据(ls)
w–空
x–用户能否进入该目录(cd)
同时有w和x权限才可以创建、删除文件和目录
9位权限关系对应表:
权限:前3位 rw-为 u 属主(所有者)的权限;中间3位 r-- 为 g所属组的权限;后三位 r-- 为o其他用户的权限
r 4
w 2
x 1
----------------------------------------------------------------
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7
如:000则对应--------- 653则对应 rw-r-x-wx 777则对应rwxrwxrwx
修改权限:
chmod u+w文件名 //在文件的所有者权限中添加 x运行权限 例如 rw- 变成 rwx
chmod g+w文件名 //在文件的所属组权限中添加 w写权限 例如 r-- 变成 rw-
chmod o+r文件名 //在文件的其他用户权限中添加 r 读权限 例如--- 变成 r--
chmod 777 文件名 //修改文件权限为rwxrwxrwx
chmod -R 777 +目录名 //递归,连同目录下的所有文件、子目录的权限都修改为777(rwxrwxrwx)
特殊权限:
suid:u+s,让进程不再属于它的发起者,而是属于程序文件本身(调用者执行该文件过程中,会暂时获得该文件的所有者权限,只在程序执行过程中有效)
例:使用suid来实现普通用户可以查看密码文件
答:先找到查看命令的程序文件位置,which cat
发现其所属者是root,现要实现普通用户查看密码文件,则要将其伪装成root
即可实现普通用户查看密码文件
sgid:g+s,在此目录下创建的所有文件的所属组均是该目录所在的属组
sticky:o+t,不能够删除其他用户在同目录里创建的文件,可删除自己创建的文件
**ACL访问控制列表:**可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以使不同的用户对某个文件有不同的权限。
getfacl+文件名 获取文件的访问控制信息
setfacl 设置文件的acl
setfacl -m u:用户名:权限 文件名/目录名 ,修改文件的acl
setfacl -m g:组名:权限 文件名
权限掩码控制创建文件的权限
查看权限掩码:umask
修改权限掩码:umask 022
普通文件的权限掩码:666
目录文件的权限掩码:777
3、命令行编辑
nmcli connection edit
e
go ipv4
set address 192.168.1.2/24
yes
set gateway 192.168.1.1
save
activate eno16777736
4、命令行编辑
nmcli connection modify eno16777736 ipv4.addresses 192.168.168.2/24
nmcli connection modify eno16777736 +ipv4.address 192.168.168.168/24
nmcli connection modify eno16777736 ipv4.gateway 192.168.168.1
nmcli connection modify eno16777736 ipv4.method manual
nmcli connection modify eno16777736 connection.autoconnect yes
nmcli connection up eno16777736
##磁盘分区和文件系统
Linux里面根据硬盘接口的不同来命名:
IDE-------hd (a-d) SATA/SCSI--------sd(a-z)
一块磁盘默认只能分配4个分区,主分区+扩展分区=4,可以4个全为主分区,
也可以把某个分区作为扩展分区,在扩展分区上可以创建多个逻辑分区:SCSI 最多 16 个,IDE 最多 63 个。
磁盘分区步骤:
一、创建分区:
1、#df-h 或lsblk //查看磁盘剩余空间情况 如果没发现对应的磁盘,请查看自己是否已经添加了相应的磁盘
2、#fdisk /dev/sdb //fdisk磁盘管理工具
Command (m for help): m //显示各参数对应含义(此处列举部分常用的)
n 创建分区
p 打印分区表
q 退出不保存
w 保存并退出
d 删除分区
l 列出已知的分区类型
t 更改分区的系统id
Command (m for help): n // n创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) //p 主分区(当前有0个主分区,0个扩展分区,可分数量为4)
e extended //e 扩展分区
Select (default p): //默认为p 主分区,直接回车
Partition number (1-4, default 1): //分区号默认为1,直接回车
First sector (2048-41943039, default 2048): //起始扇区默认从2048开始,直接回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): //设置末尾扇区,可以+1G则意为分配容量为1G
//这里直接回车,把所有容量分配给此分区
Command (m for help): p // p打印分区列表
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90e7f378
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
Command (m for help): w //w保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
3.#partprobe (同步磁盘分区信息)
4.分区完成后也可继续输入 #lsblk 或者 #fdisk -l 查看一下创建好的分区
二、创建文件系统(格式化分区):
#mkfs.xfs /dev/sdb1 //格式类型有ext2 ext3 ext4 xfs vfat nfs....(此处选xfs格式)
#df-h (查看磁盘剩余空间)或 df-TH(额外查看磁盘类型),会发现看不见sdb1的分区情况,是因为linux分区第一次需要手动挂载
三、挂载使用
#mkdir /sdb1 //在根目录创建一个sdb1的文件夹
临时挂载:
#mount /dev/sdb1 /sdb1/ //把sdb1的分区挂载到/sdb1文件夹,此时你往里面写文件是写在sdb1的分区里
#df-h 或 df-TH //此时你会发现,你能看到sdb1的分区使用情况了
卸载:umount +分区文件名或 umount+挂载点目录
#umount /sdb1 //卸载sdb1挂载
#blkid /dev/sdb1 //查询sdb1分区的UUID,复制此UUID:UUID=85e8f604-5d63-46ae-90ee-d8b950b7b8bb
设置开机自动挂载:
#vim /etc/fstab 在末尾行添加UUID以及相应的信息
UUID=85e8f604-5d63-46ae-90ee-d8b950b7b8bb /sdb1 xfs defaults 0 0
设备名称(/dev/sdb1)或uuid (建议使用UUID) 挂载目录(/sdb1) 文件系统格式(xfs) defaults 开机是否备份 开机是否检查
#mount -a //挂载所有设备(同时会检测/etc/fstab文件命令,即刷新/etc/fstab里的挂载点信息)
如果报错即挂载的某些信息问题不对(如路径),但有些信息不对也不会报错,例如文件系统格式本来是xfs的
你在挂载点信息里填的是ext4也不会报错,但你执行了mount -a起码能检测到某些错误
假设你挂载点信息真的如上填错了,那么你重启后出现以下界面:
则原因一般为/etc/fstab文件的挂载信息有错误(如文件体统格式填写不对,xfs填了ext4等)
解决方法为:直接在界面中输入root密码,在命令行界面vim进入到/etc/fstab文件找到错误信息的那行挂载点信息修改正确或直接删除,万一里面挂载点信息很多,你确实找不到哪条错误,清空所有挂载点信息或暴力删除/etc/fstab文件。
也可能有外部原因导致出现此界面:例如在VMware环境下做,你在/etc/fstab里面添加了系统默认光驱地址(/dev/cdrom或/dev/sd0)的挂载点信息,而你的光驱因某些原因没连接上导致。如:
解决方法:直接勾选已连接,重启客户端
##LVM(Logical Volume Manager,Linux环境下对磁盘分区进行管理的一种机制):
可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的。
PV(Physical Volume,物理卷)
硬盘分区后(还未格式化为文件系统)使用pvcreate 命令可以将分区创建为pv。
VG(Volume Group,卷组)
将多个 PV 组合起来,使用 vgcreate 命令创建成卷组,相当于重新整合了多个分区后得到的一块虚拟的大磁盘。 虽然VG是整合多个PV的,但是创建VG时会将VG所有的空间根据指定的PE大小划分为多个PE,在LVM模式下的存储都以PE为单元,类似于文件系统的Block。
PE(Physical Extend,物理扩展)
PE是VG中的存储单元。实际存储的数据都是存储在这里面的,但实际还是存在了磁盘的 Block 中。
LV(Logical Volume,逻辑卷)
VG 相当于整合过的硬盘,可以通过Ivcreate 命令创建逻辑卷,那么创建出来的LV逻辑卷就相当于分区了,只不过该分区是通过VG来划分的。VG中有很多PE单元,可以指定将多少个PE划分给一个LV,也可以直接指定大小(如多少兆)来划分。划分为LV之后就相当于划分了分区,只需再对LV进行格式化即可变成普通的文件系统。
LE(Logical Extent,逻辑扩展)
PE是物理存储单元,而LE则是逻辑存储单元,也即为lv中的逻辑存储单元,和pe的大小是一样的。从vg中划分lv,实际上是从vg中划分vg中的pe,只不过划分lv后它不再称为pe,而是成为le。
LVM之所以能够伸缩容量,其实现的方法就是将LV里空闲的PE移出,或向LV中添加空闲的PE。
LVM实验(实验环境VMware):
1.添加一块磁盘20G
2.参考以上磁盘分区步骤进行分区,分配5GB,更改system id为8e Linux LVM (好区分开哪个分区是做LVM的)
#fdisk /dev/sdc
n,回车,回车,回车,+5G, 按p
按 l 查看已知分区类型 找到Linux LVM对应的system id为8e
按t修改更改system id为 8e 即类型为 Linux LVM
接着按p打印sdc1分区,可以看到sdc1的system id已经更改为8e 系统类型为Linux LVM
最后按w 保存并退出
3.#pvcreate /dev/sdc1 通过pvcreate创建物理卷 #pvs 查看pv信息 #pvdisplay 查看pv详细信息
4.#vgcreate vg0 /dev/sdc1 通过vgcreate创建卷组 #vgs 查看vg信息 #vgdisplay 查看vg详细信息(截图省略)
5.#Ivcreate -L +1G -n Iv1 vg0 //通过Ivcreate创建逻辑卷 -L指定大小;-n指定lv的名字;vg0从vg0卷组中划分
#lvs 查看lv信息 #lvsdisplay 查看lv详细信息(截图省略)
6.mkfs.xfs /dev/vg0/lv1 //格式化创建文件系统
7.#mkdir /lvdir //创建挂载目录 #mount /dev/vg0/lv1 /lvdir/ //把lv1 挂载在/lvdir。
8.#umount /lvdir/ 卸载;#blkid /dev/vg0/lv1 查看并复制/dev/vg0/lv1的uuid ;在/etc/fstab末尾行写入挂载信息 ,实现自动挂载
9.#mount -a //挂载所有设备
10.#df -TH //查看lv1磁盘分区剩余情况 ,可见总容量大小为1.1G 已使用34M,剩余空间1.1G,使用率4%
我们可以往里面填充容量做测试:
linux里面有两个文件非常特殊/dev/zero(空字块文件) /dev/null(黑洞文件)你可以把所有不用的输出信息全部指向到这个路径下
dd if=/dev/zero生成空块(用空块填充), o(out输出)f(指定路径),bs(一个块的比特数大小) count(块数)
11.#cd /lvdir
12.#dd if=/dev/zero of=xlz1.txt bs=1M count=600 //写入600M大小的文件
13.#df -TH //查看当前lv1磁盘分区的剩余的空间,可见已使用了663M的空间, 使用率已经达到63%了
14.#dd if=/dev/zero of=xlz2.txt bs=1M count=400 //再往里面写入400M的文件
15.#df -TH //再查看当前lv1磁盘分区的已使用空间已经达到了100%了,仅剩21k的剩余空间大小了
16.我们尝试再往里面写入1M的文件看看 dd if=/dev/zero of=xlz3.txt bs=1M count=1
提示设备上已经没有剩余可用空间了,1M大小的xlz3.txt文件写不进去了,此时我们只能选择扩容了
lv逻辑卷扩容:
1.#vgs //查看卷组还有多少可分配空间,vg0还有4G分配空间
2.#Ivextend -L +2G /dev/vg0/Iv1 // 扩容2G空间给lv1逻辑卷 #xfs_ growfs /Ivdir //刷新一下lvdir的xfs文件系统
3.#df -TH //继续查看lv1磁盘分区空间的剩余情况,总容量3G,已用1G,还剩2G,使用率34% 成功扩容并应用上
vg卷组扩容:
1.#vgs //扩容前查看vg总大小为5G
由于vg卷组的空间是由个个分区创建的pv物理卷集合一起,所以要想扩容vg,得创建新分区,再由新分区转pv添加到vg才行
2.#lsblk 或 fdisk -l /dev/sdc // 查看磁盘c的使用情况,总共20G,已用5G,空闲15G
3.从磁盘c里创建新分区,大小为8G
#fdisk /dev/sdc //n,回车,回车,回车,+8G,t,2,8e,w
#partprobe (同步磁盘分区信息)
4.#lsblk //查看sdc2分区是否已经同步好了,
5.#pvcreate /dev/sdc2 把sdc2变成pv物理卷
#vgextend vg0 /dev/sdc2 把8G的sdc2的pv物理卷扩容给vg0
#vgs 查看扩容后vg0卷组的空间,原本的5G+扩容的8G=13G 成功
##文本压缩
大多数Linux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型 例如:
software-1.2.3-1.tar.gz 意味着:软件名称:software 版本号:1.2.3 修正版本:1 类型:.tar,说明是一个tar包 .gz说明是个压缩包
所以凡是文件后缀名为.tar(把文件打包在一起)的都是tar包,如:xlz.tar。 而文件后缀名为:gz, bz2 ,xz ,zip的这些都为压缩包
单文件压缩(不能将多个文件压缩成一个压缩包):
gzip:
压缩:#gzip+文件名
如:#gzip 1.txt 或者 #gzip 1.txt 2.txt 3.txt分别把1.txt 2.txt 3.txt压缩成1.txt.gz 2.txt.gz 3.txt.gz的压缩包
解压缩:#gzip -d +文件名.gz = #gunzip+文件名.gz
如:#gzip -d 1.txt.gz 或者 gunzip 1.txt.gz
不解压查看压缩文件内容:#zcat+文件名.gz
以下大同小异
bzip2:
压缩:#bzip2+文件名
-# 压缩比为1-9,默认为6
解压缩:#bzip2 -d +文件名
不解压查看压缩文件内容:bzcat+文件名
xz:
压缩:xz +文件名
-k 压缩时保留源文件
解压缩:xz -d +文件名
不解压查看压缩文件内容:xzcat+文件名
多文件压缩:
zip:
压缩:#zip xlz.zip 1.txt 2.txt 3.txt //把1.txt 2.txt 3.txt文件压缩成xlz.zip文件
解压缩:#unzip xlz.zip //解压缩xlz.zip文件
要是该路径已存在相同名称的文件,则问你是否替换。y替换 n不替换 A全部替换 r重命名
日常中用得最多的就是tar命令的多文件压缩
tar:
c - 打包
x - 提取文件
t - 不解压查看压缩文件
v- 输出过程信息
f- 输出到xxx文件,跟包名
j- 特指(.bz2)压缩格式
J- 特指(.xz)压缩格式
z- 特指(.gz)压缩格式
p- 保留源文件的属性
C- 解压到指定的目录
打包成tar包文件:#tar -cvf xlz.tar 1.txt 2.txt 3.txt //把1.txt 2.txt 3.txt文件打包成xlz.tar包
提取tar包里文件:#tar -xvf xlz.tar //提取xlz.tar包里的文件
一般tar命令不会仅仅用于打包使用,一般会与压缩参数一起使用,形成打包且压缩的压缩包。
压缩:
#tar -jcvf +包名.bz2+文件名 //压缩成.tar.bz2的压缩包
#tar -zcvf +包名.gz+文件名 //压缩成.tar.gz的压缩包
#tar -Jcvf +包名.xz +文件名 //压缩成.tar.xz的压缩包
如:#tar -jcvf xlz.tar.bz2 1.txt 2.txt 3.txt //把1.txt 2.txt 3.txt 文件压缩成xlz.tar.bz2的压缩包
解压缩:
#tar -jxvf +包名.bz2 //解压缩.tar.bz2的压缩包
#tar -zxvf +包名.gz //解压缩.tar.gz的压缩包
#tar -Jxvf +包名.xz //解压缩.tar.xz的压缩包
不解压查看包内容,如:#tar -tf +包名.tar.bz2
##远程登录ssh+远程拷贝scp+远程免密登录
远程登录ssh:
#vim /etc/hosts //可以在这里最下方添加主机名和ip记录 如:192.168.8.130 rhel7.1 可以用ip或主机名远程登录,如↓↓
#ssh root@192.168.8.130 //用对方的root用户登录@对方的ip地址192.168.8.130或主机名ssh root@rhel7.1 前提是有添加记录↑↑
The authenticity of host '192.168.8.130 (192.168.8.130)' can't be established.
RSA key fingerprint is 24:f4:f1:49:19:18:45:65:bd:a0:73:14:61:bc:72:cc.
Are you sure you want to continue connecting (yes/no)? yes //第一次连接对端会生成一个RSA key 选择yes继续连接即可
Warning: Permanently added '192.168.8.130' (RSA) to the list of known hosts.
root@192.168.8.130's password: //输入对方root用户的密码
Last login: Fri May 13 17:44:26 2022 from 192.168.8.128 //登录成功
远程拷贝scp(ssh+cp):
拷贝给对方:
#mkdir /root/xlz.txt
#scp /root/xlz.txt root@192.168.8.130:/xlz
root@192.168.8.130's password: //输入对方root用户的密码
xlz.txt 100% 0 0.0KB/s 00:00 //拷贝给对方成功
从对方那里拷贝过来:
#scp root@192.168.8.130:/xlz/xlz.txt /root/
root@192.168.8.130's password:
xlz.txt 100% 0 0.0KB/s 00:00
远程免密登录:
首先在本段和对端都生成一个rsa的密钥文件
#ssh-keygen -t rsa //生成rsa类型的密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): //这里提示输入保存密钥的文件,直接回车默认保存为/root/.ssh/id_rsa
Enter passphrase (empty for no passphrase): // 输入密码短语(空表示无密码短语),直接回车
Enter same passphrase again: //再次输入相同的密码,回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f6:c6:df:ac:f5:10:54:54:f5:77:be:9e:7a:f3:ad:53 root@rhel7.1
The key's randomart image is:
以上密钥内容过长,此处省略。。。。
#cd .ssh/ //进入到生成后密钥存放的路径
#ls //查看一下生成后的密钥文件:
id_rsa(私钥) id_rsa.pub (公钥) known_hosts
#cat id_rsa.pub >> authorized_keys //把公钥内容追加写入到authorized_keys文件里
#cat authorized_keys //查看一下写入公钥内容的authorized_keys文件
#scp authorized_keys root@192.168.8.130:~/.ssh/ //把写入公钥内容的authorized_keys文件远程拷贝到对端家目录的.ssh/里
#ssh root@192.168.8.130 //尝试远程登录对端是否需要密码,由下图可知,免密登录成功!
对端想要免密登录本端,也是进行以上操作把对端生成的公钥内容文件authorized_keys拷贝到本端家目录的.ssh/里即可
##软件安装
在windows中有时候安装某个软件的时候,会提示错误信息:这个软件依赖于一些组件: C+ +2003库、.NetFramwork 4.0 4.5等
在Linux中的软件程序也会依赖于一些组件,而这些组件(包)都是以后缀名为.rpm或.deb等来表示的。
以rpm和dpkg安装方法举例:
rpm安装:
安装:rpm –ivh rpm +软件包名 如:rpm –ivh software-1.2.3-1.i386.rpm
卸载:rpm –e +软件名 如: rpm –e software
-i 安装软件
-t 测试安装,不是真的安装
-p 显示安装进度
-f 忽略任何错误
-U 升级安装
-v 检测套件是否正确安装
dpkg安装:
安装:dpkg –i deb +软件包名 如:dpkg –i software-1.2.3-1.deb
卸载:dpkg –e +软件名 如:dpkg –e software
但这种安装方式它们都可能会出现以下这种情况:
就是你在安装一个包时,它都可能依赖于某个甚至某些包来完成安装,要是这些依赖包不存在,那么就安装不了。而你要是手动一个个去安装这些依赖包呢,而这些依赖包呢也会可能存在需要其他依赖包才能安装这个依赖包,所以此种方法非常繁琐。我们可以使用yum源或者apt-get安装,当你安装一个包时,它会把这个包所依赖的所有包都自动给你安装上。
apt-get与yum的区别:
①yum是安装rpm程序包的工具,运作于rpm
②apt-get可以用于运作deb包,例如在Ubuntu系统上对某个软件的管理:
安装:apt-get install <package_name>
卸载:apt-get remove <package_name>
更新:apt-get update <package_name>
yum安装:
首先需要有一个仓库(yum源),来存放这些依赖关系,在需要的时候直接调用
配置yum源的两种方式:本地源/在线源
配置本地源:
1、虚拟机连接光盘
2、挂载光盘 mount /dev/cdrom /mnt
3、#cd /etc/yum.repos.d //进到yum源的配置目录
4、#rm -rf* //清空该目录下的所有源配置文件
5、#vim xlz.repo //定义yum源配置文件。yum.repos.d目录下只认识.repo结尾的配置文件
本地源配置信息:
[xlz] //repo id
name = xlz //repo name
baseurl = file:///mnt // 指向挂载光盘的/mnt的路径
enable = 1 //1为启用源,0为不启用。如果此参数不存在,默认为启用
gpgcheck = 0 //关闭包的检测是否合法
6、#yum clean all //清理yum缓存内容
7、#yum repolist all //重新生成索引信息,列举所有的包
8、安装:yum install+包名 -y // -y 表示安装过程中自动yes确认同意安装
卸载:yum remove+包名 -y
升级:yum update+包名 -y
9、#yum install -y tigervnc* //测试安装所有名称以tigervnc开头的包,*代表任意匹配
10.看到complete!表示安装成功
[root@localhost ~]# yum install -y bash-completion #下载命令补全工具
[root@localhost ~]# yum install -y vim
[root@localhost ~]# yum install -y bzip2
配置在线源(推荐使用阿里云的永久源):
由于我们使用的是redhat7.1的版本,而centos用的内核是redhat。所以我们只需要下载centos对应的在线源镜像文件版本即可:
阿里云镜像站(centos):https://developer.aliyun.com/mirror/?spm=a2c6h.13651102.0.0.485c1b11LOWK8m&serviceType=mirror
阿里云镜像站(centos永久源/过期源):https://developer.aliyun.com/mirror/centos-vault?spm=a2c6h.13651104.0.0.875912b2wGBlsf
centos官方镜像站(不推荐,外国服务器速度慢):https://vault.centos.org/?spm=a2c6h.13651104.0.0.51ea69f5Wsasmr
所谓在线源,首先得保证本端能通外网才行
1. #ping www.baidu.com //测试能ping同外网
2.下载在线源配置文件
#cd /etc/yum.repos.d/ //首先来到配置yum源的配置目录
#ls //查看是否已存在其他源配置文件
#rm -rf * //由于这里测试,我们只需用到在线源,其他全部直接清空
#wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo //在线下载yum配置源文件
#ls //查看一下CentOS-Base.repo在线源配置文件是否成功下载下来
由于阿里云的官方在线源已下架,所以我们需要把里面的源链接替换成永久源对应的链接
如以下的[base]、[updates]等里面的这些参数所对应的在线源地址都是已经失效了
检查索引时候直接报错,访问不了
我们需要访问永久源下载文件地址:https://mirrors.aliyun.com/centos-vault/ 找到对应的版本
如7.1版本的地址:https://mirrors.aliyun.com/centos-vault/7.1.1503/ 记住后缀的 /centos-vault/7.1.1503/
3.#vim CentOS-Base.repo //进入到在线源配置文件修改参数 如[base]参数所对应的在线源信息:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
修改成:
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos-vault/7.1.1503/os/$basearch/ //把第一行在线源配置地址修改成永久源地址
# http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ //把后面两行注释掉,就用第一永久源地址就行了
# http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 //gpgkey地址也修改一下
后面的[updates]、[extras]、[centosplus]这三个参数的配置也同样操作,修改成永久源对应的地址信息即可
而后面的[contrib]参数是没有的,在下载地址https://mirrors.aliyun.com/centos-vault/7.1.1503/找不到,直接删除对应的信息即可
4. #yum clean all //清理yum缓存内容 #yum repolist all //重新生成索引信息,列举所有的包
修改提示符:
临时修改提示符颜色:PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"
显示提示符格式
[root@rhel7 ~]# echo $PS1
[\u@\h \W]\$
修改提示符格式范例
PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"
PS1="\[\e[1;32m\][\[\e[1;33m\]\t\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"
想要配置永久生效可以写入到 /etc/profile.d/xlz.sh 文件中(恢复默认的时候可以把文件直接删除即可):
echo 'PS1="\[\e[1;32m\][\[\e[1;31m\]\u\[\e[36m\]@\h\[\e[1;35m\]\W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/xlz.sh
本文来自博客园,作者:小呀小黎子,转载请注明原文链接:https://www.cnblogs.com/xlz666/p/16249752.html