Linux常用基础命令
腾讯在线文档(优化版): https://docs.qq.com/doc/DQmdRTGhIUXV0Vmxm
1.创建目录,文件:
mkdir -p /root/a/b/c/d/e #递归创建目录
touch /etc/a.sh #创建a.sh文件
which ls #which查找到命令所对应的程序
2.ls命令:
ls -hl /etc/passwd #查看详细信息并以方便读的形式
ll -hd /root #查看root目录本身的详细信息
3.快捷键:
ctrl + a #跳至命令行首
ctrl + e #跳至命令行尾
ctrl + u #清空至行首
ctrl + w #往回删除一个单词(以空格界定)
4.mount挂载:让目录成为设备的访问点
mount /dev/cdrom /dvd #将/dev/cdrom挂载到/dvd下
umount /dvd #卸载【卸载时不要在挂载点的目录下】
5.查看文件的命令:
cat -n /etc/passwd #查看并显示行号
head -3 /etc/passwd #显示头三行
tail -5 /etc/passwd #显示最后五行
grep -i “root” /etc/passwd #显示含有root关键字的行【-i为忽略大小写 , -v为取反】
6.tar命令:
【c-创建, x-释放, f-指定文件名, t-显示文件清单,c-指定释放路径】
tar -cgf /opt/a.tar.gz /opt/b.sh /root/bin
#将/opt/b.sh文件与/root/bin目录打包到/opt/a.tar.gz
【g-gz(速度快) j-bz2(中) J-xz(压缩比例高)】
tar -tf /opt/a.tar.gz
#查看该压缩目录下的文件清单
tar -xf /opt/a.tar.gz -c /mnt
#将/opt/a.tar.gz解压到/mnt下
【将 -c /mnt 去掉,则解压到当前目录下】
zip -r /opt/abc.zip /root/bin
7.重定向与管道:
head -12 /etc/passwd | tail -5 > /opt/passwd_8_12
#将/etc/passwd文件的8-12行重定向到/opt/passwd_8_12
【> -覆盖重定向, >> -追加重定向】
8.find命令:
find /root -name “passwd” -type f
#查找名字有passwd的文件
【name选项官方提示要加双引号,防出错】
【type类型: d-目录, f-文件, l-快捷方式】
find /boot/ -size +10m -user student -mtime -10
#查找/boot/目录下大于10m的文件,且所有者为student的文件
【size大小: k , m ,g +为大于 -为小于 ps:单位前不能只为1(1m,1g不行,1024m可以),否则没有输出】
【user用户: 想查的文件所有者】
【mtime时间: +10表示十天之前的, -5最近五天之内的】
find高级用法:
find /etc -size +10m -exec cp -r {} /mnt ;
#将/etc下大于10m的文件拷贝到/mnt下
【-exec:额外操作的开始 , {}:表示前面find查询的结果 , \; :额外操作的结束】
9.vim高级使用:
a. 命令模式下技巧:
a) 1g=gg #跳至行首
b) g #跳至行尾
c) 3yy #复制3行
d) p #粘贴刚复制的内容
e) x=delete键 #删除光标处单个字符
f) 4dd #删除光标处的4行
g) d^ #从光标处删除至行首
h) d$=d #从光标处删除至行尾
i) /word #向后查找字符串“word”,【n跳至后一个,n前一个】
j) u #撤销最近一次操作【u 撤销当前行的所有操作】
k) ctrl + r #取消前一次撤销操作
l) zz #保存并退出
m) ctrl + shift + “+” #字体调大
n) ctrl + “-” #字体调小
b. 末行模式下技巧:
o) :w #保存当前文件
p) :q! #放弃已有更改后强制退出
q) :wq或 :x #保存已有修改后退出
r) :w /root/newfile #另存为其他文件
s) :r /etc/filesystems #读入其他文件内容
t) : s/old/new/g #替换当前行所有的“old” 【不加g,则替换第一个】
u) :n,m s/old/new/g #替换第n-m行所有的“old”
v) :% s/old/new/g #替换文件内所有的“old”
w) :set nu #显示行号 【nonu-不显示行号】
x) :set ai #启用自动缩进 【noai- 关闭自动缩进】
10.rpm与yum软件包管理:
a. RPM:
rpm -q[子选项: a,i,l ] [RPM软件名称] #查询已装rpm包的信息【子选项:-a为列出所有已装软件包, -i为查看指定软件详细信息 , -l为查看指定软件的文件安装清单】
rpm -qf [目录或文件路径:/root , /etc/passwd] #查询某个目录/文件时哪个RPM包带来的,即使目标文件呗删除,也可以查询(有数据库的记录)
rpm -q[子选项:pi,pl] [RPM软件名称] #查询未安装的RPM文件【子选项:pi为查看指定软件的详细信息 , pl为查看指定软件的文件安装清单】
rpm -ivh [RPM软件名称] #安装rpm包【-v为显示细节 , -h为显示安装进度 -e为卸载】
rpm --force [RPM软件名称] #强制安装、覆盖安装【–test:测试安装,不做真实操作】 ,所以当某个目录或文件不小心删除了可先-qf查出是哪个包带来的,再—force覆盖安装,将其重装
b. YUM:自动解决依赖包
(epel源为扩展包含有 红帽官方之外的大部分包:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo)
mount /dev/cdrom /mydvd
vim /etc/yum.repos.d/*.repo
[haha] #仓库标识
name=hehe #仓库描述信息
baseurl=file:///mydvd #指定服务端位置【ftp:// , http://】
enabled=1 #是否启用本文件
gpgcheck=0 #是否检测签名信息
yum repolist #列出所有包的个数
yum -y install [软件包] #安装
yum remove [软件包] #卸载
yum list [软件包 #严格匹配]
yum search [软件包] #模糊查询
yum clean all
11.命令小扩展
a. 查看帮助:
[命令] --help
man [命令]
b. 历史命令:
history #查看历史命令
history -c #清空历史命令
!cat #运行历史命令中最近一条以cat开头的命令
c. 统计空间:
du -sh #统计文件占用的空间【-s:只统计父目录 ; -h: 易读单位】
d. 常用日期:
Date #查看当前时间 【–help: 查看日期一些常用参数】
date -s “2021-12-30 12:00” #重新设置日期
e. 制作链接:
ln -s /etc/sysconfig/network-scrpts/ /network #制作软链接快捷方式
ls -l /network #查看快捷方式/network信息
f. Linux-Windows通用压缩:
Zip -r /opt/abc.zip /home /boot #跨平台归档【将/home /boot压缩到/opt/abc.zip】
Unzip /opt/abc.zip -d /hh #将/opt/abc.zip释放到/hh目录下
12.用户管理,组账号管理
/etc/passwd文件解释
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/group文件解释
组名:组密码占位符:GID:组成员列表
a. 创建用户:
useradd [选项] 用户名 #【-u:指定UID ; -d:指定家目录(所指定的家目录不能已存在,不能多层目录下(/opt/aa/bb/cc)) ; -G:指定附加组 ; -s:指定解释器】
groupadd L1 #添加组
useradd -u 1100 -d /opt/my_zhi01 -G L1 -s /sbin/nologin zhi01 #添加用户并指定UID,家目录,附加组,解释器
id [用户名] #查看用户基本信息
b. 修改用户:
usermod [选项] 用户名 #【-l:更改账户登录名 ; -u:更改UID ; -d:家目录(修改后需要自己创建指定目录并授权) ; -G:重置附加组 ; -s:登录解释器】
c. 删除用户:
userdel [选项] 用户名 #【-r:宿主目录/用户邮件一并删除】
d. 创建组:
groupadd 组名 #添加组
e. 管理组成员:
gpasswd [选项] 用户名 组名 #【-A:定义组管理员列表 ; -a:添加组成员,每次只能一个 ; -d:删除组成员,每次只能一个 ; -M:定义组成员用户列表(重置),可多个(多个用户逗号隔开,双引号引起来)】
gpasswd -M “zhi01,zhi02,zhi03” lzl01
f. 删除组:
groupdel 组名
13.用户初始配置文件
/etc/skel #新建用户时,根据/etc/skel模板目录复制到 新建用户家目录)
~/.bashre #每进入新BASH环境时执行,定义永久别名(家目录下隐藏文件)
/etc/bashrc #全局的配置文件,别名设置文件
14.周期计划任务
crontab -e [-u 用户] #编辑
crontab -l [-u 用户] #查看
crontab -r [-u 用户] #清除
周期性计划任务书写格式:
分 时 日 月 周 任务命令行 (绝对路径)
*/5 * 1,15 * 1-5 每月1号和15号或者周1至周5,每隔5分钟执行一次
【 * : 匹配范围内任意时间】
【 , : 分隔多个不连续的时间点】
【 - : 指定连续时间范围】
【 */n : 指定时间频率,每隔n…】
15.权限管理(RWX,属主,属组,附加)
a. RWX权限
执行 ls -l 或者 ls -ld 命令查看
drwxr-xr-x 19 root root 3940 Mar 6 13:38 dev
-rw------- 1 root root 1149 Jun 2 2019 disk_check.log
lrwxrwxrwx 1 xtjk02 xtjk02 41 Mar 10 11:42 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
首字母:-表示文件;d表示文件夹;l表示软连接
第二列:子目录数(包括隐藏目录)
b. 修改权限(chmod命令)
chmod [ugoa] [±=] [rwx] [文件名]
chmod [0-7][0-7] [0-7] [文件名] # r=4 ; w=2 ; x=1
常用命令选项 【-R】:递归修改权限
c. 组管理(归属关系)
chown 属主:属组 [文件名]
常用命令选项 【-R】:递归修改权限
d. 新建文件/目录的默认权限
- 一般文件均默认不给 x 权限
- 其他取决 umask 设置(或者umask -S 查看) (0022–第一个数字表示附加权限,)
a. 新建目录默认权限为 755
b. 新建文件默认权限为 644
e. 附加权限(粘滞位)(仅修改自己文档)
chmod o+t [文件名]
- 占用其他人的 x 位
- 显示为 t 或 T,取决于其他人是否有 x 权限(无执行权限时为T)
- 适用于目录,用来限制用户滥用写入权
- 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或修改其他用户文档
f. SGID权限(新建继承父目录所属组)
chmod u+s [文件名]
- 占用属组的 x 位
- 显示为 s 或 S,取决于属组是否有 x 权限(无执行权限时为S)
- 对目录有效
- 在一个具有SGID权限目录下,新建的文档会自动继承此目录的属组身份
g. ACL策略管理(个别用户,个别组添加权限)(setfacl)
1.能够为个别用户,个别组设置独立权限
setfacl [选项] u:用户名:权限 文件名
setfacl [选项] g:组名:权限 文件名
getfacl 文件名 #查看ACL策略
常用命令选项:
-m:定义一条ACL策略
-x:清楚指定的ACL策略
-b:清楚所有已设置的ACL策略
-R:递归设置ACL策略
16.分区模式(MBR与GPT)
a. MBR分区模式
1. MBR/msdos分区模式
i. 分区类型:主分区,扩展分区,逻辑分区
ii. 最多四个主分区
iii. 扩展分区可以没有,至多一个
iv. 1~4个主分区 或者 3个主分区+1个扩展分区(n个逻辑分区)
v. 最大支持容量为2.2TB的磁盘
vi. 扩展分区不能格式化,空间不能直接存储数据
vii. 可以用于存储数据的分区:主分区和逻辑分区
2. fdisk常用交互指令:(fdisk /dev/sdb )
i. m 列出指令帮助
ii. p 查看现有的分区表(存放分区信息的表格)
iii. n 新建分区
iv. d 删除分区
v. q 放弃更改并退出
vi. w 保存更改并退出
vii. t 修改分区类型(8e--LVM设备类型)
3. partprobe /dev/sdb #刷新分区表
4. lsblk (查看分区)
5. 格式化【ext4 (RHEL6), xfs(RHEL7) , FAT】
i. mkfs.(Tab)(Tab) #查看格式化类型
ii. mkfs.ext4 /dev/sdb1 #格式化文件系统ext4(可重新格)
6. blkid #查看文件系统类型
7. 挂载使用
i. mkdir /mydr1
ii. mount /dev/sdb1 /mydr1
iii. df -h #查看挂载点
8. GPT分区模式(最多128主分区,最大18EB容量)
9. parted常用分区命令
i. -(Tab)(Tab) #查看常用命令
ii. -help #查看指令帮助
iii. -mktable gpt #建立gpt类型分区表
iv. --mkpart [分区名称] [文件系统类型] start end #指定大小或百分比%作为起始,结束位置
v. -print #查看分区表
vi. -rm [序号] #删除指定分区
vii. -quit #退出
17.Swap交换空间
a. 用分区制作
mkswap /dev/sdc1 #格式化交换文件系统
swapon #查看交换空间组成成员
swapon /dev/sdc1 #启用交换分区
swapon -s #显示交换分区使用情况
swapon #查看
free -h #查看交换空间大小
swapoff /dev/sdc1 #停用交换分区
b. 用文件制作
c. 生成大文件占用空间(可模拟生产环境空间占用大)
[root ] # dd if=/dev/zero of=/opt/swap.txt bs=1M count=1000
##dd命令:读取文件写入(读完为止); if–要读取的文件路径 ; --/dev/zero:永远都在产生数据且数据基本无意义 ; of–要写入的文件路径 ; bs–每次读写块的大小 ; count–总共读写多少次
d. 格式化交换文件系统,启用
mkswap /opt/swap.txt
swapon /opt/swap.txt
18. 开机自动挂载/etc/fstab
设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
/dev/sdb1 /mydr1 ext4 default 0 0
/dev/sdb2 /mydr1 xfs default 0 0
i. mount -a #检测/etc/fstab开机自动挂载文件,同步挂载点
/dev/sdb1 swap swap default 0 0
/opt/swap.txt swap swap default 0 0
ii. swapon -a #专门检测交换分区
19.LVM逻辑卷
a. 作用:a-整合分散的空间,b-空间支持线上扩大
b. 过程:将众多物理卷组建成卷组,在从卷组中划分出逻辑卷
c. 命令:pv(Tab)(Tab) vg(Tab)(Tab) lv(Tab)(Tab)
**s —扫描 **create —创建 **display —显示
**remove —删除 **entend —扩展
d. 建立卷组(VG):
格式:vgcreate 卷组名 设备路径…
vgcreate systemvg /dev/sdb[1-2]
e. 建立逻辑卷(LV):
格式:lvcreate -L 卷大小 -n 逻辑卷名 卷组名
lvcreate -L 2G -n testlv systemvg
mkfs.xfs /dev/systemvg/testlv #格式化(然后挂载/mylv下使用)
f. 扩展逻辑卷(扩展卷组)
i. 卷组剩余空间足够
1. 扩展逻辑卷的空间
a. lvextend -L 5G(+3G) /dev/systemvg/testlv
2. 扩展逻辑卷的文件系统(刷新文件系统)
a. xfs_growfs /dev/system/testlv : 刷新xfs文件系统(与前文件系统保持一致)
b. resize2fs 逻辑卷名 : 刷新ext4文件系统
ii. 卷组没有足够剩余空间
1. 扩展卷组的空间
a. vgextend systemvg /dev/sdb3 /dev/sdb5
b. vgs
2. 扩展逻辑卷的空间(同上19-f-i-1)
3. 扩展逻辑卷的文件系统(刷新文件系统)(同上19-f-i-2)
e. 逻辑卷的补充
1. xfs文件系统不支持缩减; ext4文件系统支持缩减
2. 卷组划分空间的单位 PE (默认1个PE大小为4M)
a. vgdisply systemvg #查看卷组信息(PE Size 4.00 MiB)
b. vgchange -s 1M systemvg #修改PE大小
c. lvcreate -l 250 -n lvredhat systemvg #创建250个PE的逻辑卷即250M(若不改PE大小,则只能得到252M的)
3. 卷组,逻辑卷的删除
a. 删除卷组的前提:基于此卷组创建的所有逻辑卷,要全部删除
b. 删除逻辑卷的前提:不能删除正在挂载使用的逻辑卷
c. umount /mylv
d. lvremove /dev/system/testlv
20.RAID磁盘阵列
RAID 0:条带模式—同一文档分散存放于不同磁盘–并行写入提高效率–最少两块磁盘–磁盘利用率100%
RAID 1:镜像模式—同份文档复制多份,分别写入不同磁盘–多份拷贝提高可靠性,效率无提升–至少两块磁盘–磁盘利用率50%
RAID 5:高性价比模式—0/1折中方案–至少一块磁盘来存放校验数据–至少三块磁盘–磁盘利用率(n-1)/n
RAID 6:高性价比&可靠模式—5的扩展方案–至少两块磁盘来存放检验数据–至少四块磁盘–磁盘利用率(n-2)/n
21.查看进程(进程控制,pstree, ps,top,pgrep ,干掉进程)
a. 进程控制:
[命令] & #放入后台运行
Ctrl+z #将当前进程暂停放入后台
jobs -l #查看后台进程信息
bg [进程编号] #让后台进程继续运行
fg [进程编号] #让后台进程恢复到前台
b. pstree查看进程
pstree -ap [用户名] #显示完整的命令行(-a),列出对应进程的PID号
c. ps命令
systemd(PID 永远为1):所有进程的父进程
ps -aux #显示当前终端所有进程(a),当前用户在所有终端下的进程(x),以用户格式输出—(用户 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令)
ps -elf #显示系统内所有进程(-e),以长格式输出(-l),包括最完整的进程信息(-f)—(PPID为父进程PID ,PRI/NI为进程优先级,数值越小优先级越高)
d. top命令
top [-d 刷新秒数] [-u 用户名]
按大写P,进行CPU排序
按大写M,进行内存排序
e. pgrep命令
pgrep [选项] 查询条件 #选项:[-l]–输出进程名,而不仅仅是PID; [-U]–检索指定用户的进程; [-x]–精确匹配完整的进程名
f. 干掉进程
-Ctrl+c 组合键 #中断当前命令程序
-kill [-9] PID… #【-9强制杀(可不加-9,温柔杀)】
-killall [-9] 进程名… #-杀掉所有该进程名的程序
killall -9 -u zhi #杀死用户开启的所有进程(踢出一个用户)
22.NTP网络时间协议
yum -y install ntp #安装Network Time Protocol
sed -i ‘s/0.centos.pool.ntp.org/ntp1.aliyun.com/’ /etc/ntp.conf #设置以阿里云时间服务器同步(或者选其时间服务器)
systemctl restart ntpd
systemctl enable ntpd
23.配置网络参数、网卡IP
a. 主机名
配置永久主机名
方法一:hostnamectl set-hostname liu18 #立即生效,且永久配置
方法二:echo li18 > /etc/hostname #重启生效,永久配置
临时配置主机名
hostname zhi18
b. 网卡
配置网卡命名规则
(不配置会导致网卡名会随机,上一个ens33,下一个可能ens68)
[root@li ]# vim /etc/default/grub #grub内核引导程序
…以上部分配置省略…
GRUB_CMDLINE_LINUX=“crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0 biosdevname=0”
…一下部分配置省略…
[root@li ]# grub2-mkconfig -o /boot/grub2/grub.cfg #让网卡命名规则生效
[root@li ]# reboot
c、命令行配置网卡IP
[root@li ]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.90/24 connection.autoconnect yes
[root@li ]# nmcli connection up ens33
d、修改配置文件配置IP
[root@li ]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
Generated by dracut initrd
NAME=ens33 #这个参数对应的值是网卡名,是给用户看的
DEVICE=ens33 #此配置文件应用到的设备#网卡名称
ONBOOT=yes #在系统引导时是否激活此设备
NETBOOT=yes
UUID=9325d7ef-7467-4907-a6cc-3bb3e91898f5 #设备的唯一标识
IPV6INIT=yes
BOOTPROTO=none #获取IP方式
TYPE=Ethernet #网络类型Ethernet(以太网),Bridge(桥)
PROXY_METHOD=none
BROWSER_ONLY=no
IPADDR=192.168.1.10 #指明ip地址
PREFIX=24
GATEWAY=192.168.1.254 #默认网关
DEFROUTE=yes #是否设置默认路由,yes表示该配置
IPV4_FAILURE_FATAL=no #如果ipv4配置失败禁用设备
IPV6_AUTOCONF=yes #是否自动配置IPv6
IPV6_DEFROUTE=yes #是否使用默认路由
IPV6_FAILURE_FATAL=no #如果IPv6配置失败禁用设备
e、查看,删除网卡
nmcli connection show #查看识别网卡的名称
nmcli connection delete ‘ens33’ #删除识别的网卡
nmcli connection add type ethernet ifname eth0 con-name eth0
添加 类型 以太网设备 设备名 eth0 配置文件名 eth0
后续有空在进行更新