写点什么

Linux 常用基础命令(巨全)

作者:A-刘晨阳
  • 2022-11-01
    北京
  • 本文字数:17019 字

    阅读完需:约 56 分钟

@[toc]Linux 系统下,以.开头的都是隐藏文件 Linux 中..表示上一级目录,.表示当前目录长格式引导:-- 引导单词短格式引导:- 引导字母


  • - 表示普通文件可执行文件 绿色 压缩文件红色 d 表示目录 蓝色 l 表示链接文件 浅蓝色 b 表示块设备文件 黄色 c 表示字符设备文件 黄色 s 表示套接字文件 紫色 p 表示管道文件 紫色


绝对路径:从根目录开始写的路径叫绝对路径相对路径:从当前目录开始写的路径相对路径


❀ls 命令

1.ls (list) 列出目录下的内容


❀cd 命令

❀pwd 命令

pwd  打印工作目录
复制代码


su -root  切换到管理员命令
复制代码

❀date 命令


%H 小时(以 00-23 来表示)。 %I 小时(以 01-12 来表示)。 %K 小时(以 0-23 来表示)。 %l 小时(以 0-12 来表示)。 %M 分钟(以 00-59 来表示)。 %P AM 或 PM。 %r 时间(含时分秒,小时以 12 小时 AM/PM 来表示)。 %s 总秒数。起算时间为 1970-01-01 00:00:00 UTC。 %S 秒(以本地的惯用法来表示)。 %T 时间(含时分秒,小时以 24 小时制来表示)。 %X 时间(以本地的惯用法来表示)。 %Z 市区。 %a 星期的缩写。 %A 星期的完整名称。 %b 月份英文名的缩写。 %B 月份的完整英文名称。 %c 日期与时间。只输入 date 指令也会显示同样的结果。 %d 日期(以 01-31 来表示)。 %D 日期(含年月日)。 %j 该年中的第几天。 %m 月份(以 01-12 来表示)。 %U 该年中的周数。 %w 该周的天数,0 代表周日,1 代表周一,异词类推。 %x 日期(以本地的惯用法来表示)。 %y 年份(以 00-99 来表示)。 %Y 年份(以四位数来表示)。 %n 在显示时,插入新的一行。 %t 在显示时,插入 tab。 MM 月份(必要) DD 日期(必要) hh 小时(必要) mm 分钟(必要)ss 秒(选择性)


❀创建、删除文件和目录命令



{1..100} 表示 1 到 100


❀alias 命令

alias 别名(例如:a=”rm -r“好比如 rm -r)

alias 取消别名(unalias 别名)


设置永久可参考👉Linux设置永久别名alias的方法👈

❀复制、移动、重命名、查看(文件、目录)命令


mv 原路径 目标路径

mv 原文件名 要修改的文件名



cp【选项】 原路径 目标路径



tail -f 文件名 【一般用来持续查看文件,比如查看日志或者是启动一个程序输出的结果】

简化:tailf 文件名


❀find 查找、wc 统计命令

find 按条件查找文件

find 查找范围(默认是当前目录) 条件



删除系统中所有 a.txt 文件 rm -rf $(find / -name "a.txt") find / -name "a.txt" -exec rm -rf {} \ find / -name "a.txt" |xargs rm -rf


删除/application/log/下的一天前的日志并设置为每周一删除,类型为目录 0 0 * * 1 find /application/log/ -mtime +0 -type d | xargs rm -rf



❀vi/vim 命令

vi/vim 进入编辑模式


编辑模式::


i:在光标显示的地方直接编辑;

I:在光标显示的行首编辑;a:在光标显示的后一个编辑;A:在光标显示的行尾编辑;o:在光标显示的下一行编辑;O:在光标显示的上一行编辑;s:删除光标所在的位置并进行编辑;S:删除光标所在的行进行编辑;


编辑模式-->Esc 键-->命令模式


命令模式:


跳转:gg 跳转到文件第一行 G 跳转到文件最后一行数字 gg 跳转到指定行 home 或^ 跳转到行首 end 或 $ 跳转到行尾 w 每次跳过一个单词

删除或剪切:dd 删除光标所在行 D 删除光标所在位置到行尾数字 dd 删除光标所在行下指定的行数 dG 删除光标所在行到文件结束位置 x 或 delete 删除光标所在的字符

复制与粘贴:yy 复制光标所在的一行数字 yy 复制光标下指定的行 p 粘贴到光标的下一行 P 粘贴到光标的上一行

u 撤销 ctrl+r 恢复


命令模式 --> :/?-->末行模式


末行模式:


/ 查找 :w 保存(文件路径)另存为 :q 退出 :wq 保存并退出 :q! 强制退出 :w! 强制保存 :wq! 强制保存并退出:r 文件路径 将另一个文件读入光标下一行 %s#old#new#g 替换:%s/old/new/g 替换(加 g 是全部替换,old 是原内容要换成 new,new 是要换成的内容 #代表分割; /也代表分割):set number /set nu 显示行号:set nonumber /set nonu 取消显示行号:set nohlsearch 取消高亮显示


可视模式:


ctrl+v 可视块模式 shift+v/V 可视行模式 v 可视模式


❀压缩与解压缩

gzip 与 gunzip


1-9 9 最大 生成文件小,速度越慢 gunzip=gzip -d

压缩:gzip 原文件 文件名 解压缩:gunzip 原文件 文件名


bzip2 与 bunzip2


bunzip2=bzip2 -d

压缩:bzip2 原文件 文件名 解压缩:bunzip2 原文件 文件名


tar 的压缩与解压缩



--exclude=“”指定排除不需要传输的文件模式 比如:tar -cvzf bash.tar.gz /dir1 --exclude="*.txt" 排除所有以.txt 为后缀的文件不传输

一般常用的压缩与解压缩压缩:tar cvf 原文件 文件名解压缩:tar xvf 原文件 文件名


file(压缩包名)可以查看这个文件是否是压缩包和类型


❀grep sed awk 命令以及正则表达式

grep:


语法:


grep 【选项】 '内容' 文件名



正则表达式:


基础正则表达式 -->grep 可以直接使用 $ 以...结尾^ 以...开头. 匹配任意一个字符- 匹配前一个字符或子表达式任意次(例如:grep "g.d" a.txt(过滤 a.txt 文件中的以 g 开头以 d 结尾可以代表有任意多个字符或没有字符))[A-Z] [a-z] [0-9] [A-Za-z0-9][^a-z] 取反


扩展正则表达式 egrep =grep -E{n,m} 匹配前一个字符或子表达式 n 到 m 次{n, } 匹配前一个字符或子表达式最少 n 次{ ,m} 匹配前一个字符或表达式最少 m 次{n} 匹配前一个字符或子表达式 n 次


+ 匹配前一个字符或子表达式 1 次以上(*包括 0+不包括,至少)? 匹配前一个字符或子表达式 0 次或 1 次以上| 或 () 分组(例如:(g|f)ood)


\ 转义,取消一个字符的特殊含义


想要查看更多的正则表达式就去👉正则表达式(全)👈


查找/root 这层目录有多少个普通文件? find ./ -maxdepth 1 -type f ! -name ".*" | wc -l | ll | grep -c "^_"


sed:


语法:


sed [选项] ‘[操作地址]sed 内置操作’ 文件


常用选项



操作地址



内置操作



awk:


语法:


awk [选项] ‘BEGIN{command}匹配模式{command}END{command}’ 文件


内置操作



which 文件名查找命令的绝对路径、




❀制作模板机

👉制作模板机👈


#进入:vim /etc/sysconfig/network-scripts/ifcfg-ens33#1.网络配置  NATTYPE=EthernetBOOTPROTO=staticNAME=ens33DEVICE=ens33ONBOOT=yesIPADDR=192.168.2.10NETMASK=255.255.255.0GATEWAY=192.168.2.1DNS1=114.114.114.114

/etc/init.d/network restart 重启网络服务 ip a 查看网络信息
复制代码


xshell 连接慢如何解决:


进入 vi /etc/ssh/sshd_config 再找到 UseDNS 吧 yes 改成 no,前面“#”符号也要删,保存退出

重启 ssh 服务:systemctl restart sshd


防火墙与 selinux 的关闭及开启和永久生效 :


查看防火墙详情请看:👉Linux防火墙命令👈


systemctl stop firewalld 关闭防火墙服务 start

systemctl disable firewalld 禁止防火墙开机自启动 enable

firewall-cmd --state 查看防火墙状态

systemctl status firewalld

systemctl is-enabled firewalld 查看防火墙是否开机自启动

getenforce 查看 selinux 的状态 setenforce 设置 selinux 的状态

vi /etc/selinux/config vi /etc/sysconfig/selinux SELINUX=disabled 重启系统生效


挂载磁盘:


查看磁盘信息:fdisk -l 查看

创建目录:mkdir /media/cdrommount /dev/sr0 /media/cdrom 挂载磁盘

df -Th 挂在完查看挂载信息


配置本地 yum 仓库:


cd /etc/yum.repos.d/mkdir bakmv *.repo bak
复制代码


yum 源文件存在 /etc/yum.repos.d 中

创建一个文件(local.repo):vi local.repo[local]name=localbaseurl=file:///media/cdromenabled=1gpgcheck=0


配置完成之后

yum clean all 清除 yum 缓存 yum makecache 建立新的 yum 缓存 或者直接用:yum makecache fast 加载未加载的缓存安装 vim 和 man 命令: yum -y install vim man


设置永久挂载:


进入 fstab:

vim /etc/fstab/dev/sr0 /media/cdrom iso9660 defaults 0 0 第一段:挂载的设备 (dev/sr0)第二段:挂载的目录 (/media/cdrom)第三段:文件系统类型(iso9660)第四段:挂载的参数 defaults 默认参数(defaults )第五段:是否使用 dump 备份 0 不备份 1 备份(0)第六段:是否使用 fsck 检测 0 不检测(0)


注解:


1.系统中只有一块硬盘,sda,分区 sda1,sda2 ;2.根目录是整个系统目录的顶点,/mnt 也在根目录下;3.如果知道根目录对应的是哪个硬盘分区,可以判断出 a.txt 存到哪个设备上;

mount /dev/sr0 /media/cdrom mount /dev/sdb4 /mnt


扩展:格式化磁盘


#Cetnos6格式化磁盘mkfd.ext4 -f /dev/[sda]#Centos7格式化磁盘mkfs.xfs -f /dev/[sda]
复制代码


重启系统的命令:reboot、init 6、shutdown -r




❀软件包管理


在 CenOs 系统中,卸载 gcc 的软件包时,可以使用命令 rpm -e gcc

使用 rpm 命令强制卸载软件包时要加选项 --nodeps


FHS 文件系统标准第一层:定义了跟目录下的目录存放相应的文件第二层:/usr 和/var 目录的划分



部署 nginx(使用源码包部署)


tar 包(源码包)


1.解包物理机向虚拟机传文件:  (1.利用 U 盘,挂载  (2.lrzsz 包提供的命令   rz 物理机-->虚拟机   sz 虚拟机-->物理机  (3.xftp 大文件 2.配置  (1)sz 先把 nginx 压缩包复制到虚拟机  (2)解压 nginx 压缩包:tar xf nginx-1.6.0.tar.gz -C /usr/src/  (3)切换到 nginx 目录下:cd /usr/src/nginx-1.6.0  (4)./configure --prefix=/usr/local/nginx && make && make install 指定安装路径然后编译在安装


报错 1:./configure: error: C compiler cc is not found 没有编译环境解决:yum -y install gcc gcc-c++

报错 2:./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=option. 缺少 pcre-devel 库解决:yum -y install pcre-devel 问题 3:./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=option.缺少 zlib-devel 解决:yum -y install zlib-devel


echo $? 通过其返回值,判断上一条命令是否执行成功(0 表示执行成功;非 0 表示执行失败)


make 编译 make install 安装


❀用户、用户组管理

超级用户 root UID=0 普通用户 /bin/bash UID!=0 程序用户 /sbin/nologin


在 Linux 系统中创建用户后,会以目录 /etc/skel/ 为模板复制文件到用户家目录/etc/passwd 存放的是用户信息/etc/shadow 存放的是用户密码 root: x :0:0:root:/root:/bin/bash 第一段:用户名第二段:密码占位符第三段:UID 第四段:GID 第五段:描述信息第六段:用户家目录第七段:用户登录的 shell/bin/bash/sbin/nologin 创建一个名为 mysql 用户,并禁止登录系统(统称:程序用户)useradd -s /sbin/nologin mysql


用户管理:


新增用户语法:


useradd [选项] 用户名



在创建用户时,默认会从/etc/skel 目录下复制内容到用户家目录下


su 用户名 切换用户 su - 用户名 系统环境变化 ctrl+d 或 exit 退出登录


修改用户信息语法:


usermod [选项] 用户名



passwd 修改或设置用户密码 passwd root 密码更改 root 的密码 echo “123123”|passwd --stdin test 不交互设置命令,给 test 用户设置一个密码 passwd -lpasswd -upasswd -s


删除用户语法:


userdel [选项] 用户名



用户组管理:



举例:


gpasswd -a test root 将用户 test 加入到 root 组里


查看用户信息:/etc/passwd 存放的是用户信息查看用户密码信息:/etc/shadow 存放的是用户密码查看用户组信息:cat /etc/gshadow


主要组附加组


附加命令:


id 查看用户的 id 和组 users 查看当前登录的用户 groups 查看用户属于哪个组 whoami 查看当前登录的用户 who 查看用户登录信息 w 查看用户登录信息



❀文件权限管理

详情请看:👉文件权限管理--权限掩码👈r 读 w 写 x 执行


查看文件权限:rw-r--r--第一组用户权限第二组用户组权限第三组其他用户权限 chmod 修改文件权限 chmod [选项] “u/g/o/a+/-/=rwx”文件(u 代表第一组 uid,g 代表第二组 gid,o 代表第三组其他用户权限,a 代表全部(a 会给每一组加一个))r=4 w=2 x=1 -=0


文件的归属:属于哪个用户 属主 属于哪个用户组 属组


语法:


chown [选项] 用户:用户组 文件名-R 递归修改/dir1/ a.txt b.txt c.txtchown -R root:root /dir1


find ./ -maxdepth 1 -type f ! -name ".*" -exec chown xiaoming:xiaomimg{ } ;查找深度为 1 的名字、为.*结尾的文件再给他修改用户和用户组


权限掩码-->默认文件和目录的权限


umask 022 创建一个文件默认权限是 644=666-022,目录时 755=777-022


文件的 ACL(访问控制列表)


getfacl 获取文件的 ACLsetfacl 设置文件的 ACLsetfacl -m 用户:权限 文件名 设置用户权限-x 删除指定文件的 ACL(setfacl -x 用户名 文件名)-b 清空文件的 ACL(setfacl -b 文件名)


默认情况,文件给定用户的 ACL 要考虑到 ACL 中的 mask 值


特殊权限:rws/s rws/S rwt/T4 2 1 大小写取决于执行位是否有执行权限


特殊属性:


lsattr 查看特殊属性 chattr 设置特殊属性 i 不能修改不能追加 a 只可以追加,不能修改 只有 root 用户可以设置


用法:


chattr -i 文件名 chattr +i 文件名


❀磁盘管理

详情查看:Linux磁盘管理


fdisk:


磁盘管理-->块设备文件 b 开头-->/dev/对于 linux 系统磁盘命名:IDE 接口的硬盘为 hda hdbSAS,SATA,SCSI 接口的硬盘 sda 分区 sda1 sda2 sdb


主引导记录(MBR):位于磁盘的第一个扇区 521 字节=446 字节 引导程序 记录 4 个分区表,每个 16 字节,64 字节 还有 2 个校验字节



最常用的查看磁盘分区:fdisk -l


MBR 中只可以划分 4 个主分区,或者时 3 个主分区+1 个扩展分区扩展分区后,可以划分逻辑分区


1.fdisk 划分分区 2.创建文件系统 mkfs.xfs /dev/sdb1(划分)  文件系统:组织和管理文件的  FAT16 FAT32 exFAT u 盘使用-->不支持单个超过 4G  NTFS -->windows 使用  ext4/ext3/ext2 -->centos6 默认  XFS -->centos7 默认  centos6 和 centos7 的区别:默认系统不同 mkfs 创建文件系统-f 强制覆盖因为系统中主分区加扩展分区占用 1-4 的分区号,所以第一个逻辑分区为 5




常用的是:df -Th 查看挂载文件


gdisk:


gdisk -->划分容量超过 2T 磁盘分区 GPT 128 个 parted


交换分区 swap


作用:当内存不够时,使用交换分区代替内存;


mkswap 创建交换分区 swapon 开启交换分区    -s 查看系统中的交换分区    -p 设置优先级    -a 开启所有的交换分区 swapoff 关闭交换分区


查看内存:


free -m 查看内存 free 查看系统内存使用情况  -m 以 M 为单位


查看文件、目录大小:


du 文件名 查看文件或目录占用磁盘大小  -m -h 以人类可读方式显示  -m -s 仅显示目录或文件的总计数值




LVM 逻辑卷管理:


作用:动态调整区分大小缺点:在性能上有所降低


pv 物理卷 -->直接对磁盘操作 vg 卷组 -->将所有的物理卷组合 lv 逻辑卷 -->在卷组中划分出一定的空间



xfs_growfs 路径 刷新 xfs 文件系统 resize2fs 路径 刷新 ext4 文件系统




cache 缓存:


cache data LV 数据卷,用来缓存数据 cache metadata LV 元数据卷,用来缓存元数据 cache pool LV 缓存池,包含 data+metacache LV 缓存卷,包含真时的 LV 卷+缓存池


SSD 固态硬盘 HDD 机械硬盘


lsblk 列出块设备信息


创建缓存数据 lvcreate -L 10G -n cache_data /dev/vg0 /dev/sde1 创建元数据 lvcreate -L 100M -n cache_meta /dev/vg0 /dev/sde1 创建缓存池 lvconvert --type cache-pool --poolmetadata vg0/cache_meta vg0/cache_data 把缓存池里的放到逻辑卷下: lvconvert --type cache --cachepool vg0/cacha_data vg0/lv0


创建一个新的文件系统:mkfs.xfs /dev/vg0/lv0 在跟目录下创建 test 挂载根目录下的 test:mount /dev/vg0/lv0 /test


snapshot 快照:


-s 快照-L 值 要设置的大小-n 名字 要写的名字创建快照卷:lvcreate -L 2G -s -n lv_snapshot vg0/lv0 测试快照卷速度: dd if=/dev/sda of=/test/mbr.bak bs=512 count=1(dd 测试,if 源路径,of 要复制到哪路径,bs 一次复制多少 M,count 复制多少次) dd if=/dev/zero of=/test/mbr.bak bs=10M count=100(dd 测试,if 源路径,zero 代表 0,of 要复制到哪路径,bs 一次复制多少 M,count 复制多少次)在跟目录下创建/snapshot 目录挂载:mount -o nouuid /dev/vg0/lv_snapshot /snapshot/(uuid 相同用-o nouuid)


UUID 设备的唯一标识:blkid 查看磁盘的 UUIDnmcli conn show 查看网卡的 UUID



❀RAID 独立磁盘冗余阵列 数据安全性

硬 RAID 软 RAIDRAID 0 条带模式优点:提高数据的读写速度缺点:数据安全性低,一旦 RAID 中有磁盘损坏,RAID 组不可用 RAID 1 镜像模式 需要 2N 快盘优点:数据完全冗余(备份),安全性高(读效率相对提高)缺点:磁盘利用率低,成本高(50%)(写性能有所降低)RAID 5 分布式奇偶校验模式 至少使用少 3 块硬盘优点:数据相对安全,允许有一块磁盘损坏(校验数据) 读性能相对有提升缺点:如果两块盘损坏,RAID 不可用,写性能相对较低(做校验数据)使用率:"[(n-1)/n]*100"RAID 10RAID 50


软 RAID 实现通过 mdadm



降级与重构


cat /proc/mdstat


❀linux 系统启动流程

1.BIOS 加电自检(BIOS 基本输入输出系统)2.MBR 引导(MBR 主引导)全称( Master Boot Record)3.GRUB 菜单(可以让你选择用哪个系统内核)4.加载内核 5.初始化进程 init(切换系统运行的级别) systemd


uname(uname -s) 显示 linux 内核名称【Linux】|



查看系统版本:cat /etc/redhat-release


CentOs 6 默认的文件系统是 ext4CentOs 7 默认的文件系统是 xfsCentOs 6 内核版本使用的是 2.6CentOs 7 内核版本使用的是 3.10


linux 系统的运行级别


0 关机 1 单用户(不要密码就可以进入,主要是用于做调试)2 无网络的字符界面多用户 3 完整的字符界面多用户 4 未启用 5 图形界面 6 重启


centos 7systemctl get-default 查看系统默认的运行级别 systemctl set-default 级别 设置系统图默认的运行级别 multi-user.target 字符 3graphical.target 图形 5


破解 root 用户密码 CentOS 6:e2e 空格 1 回车再按 b passwd rebootCentOS 7:

❀重定向

详细文章在:Linux中的重定向以及标准输入输出、混合输出和标准错误输出


标准输入:


在页面直接显示 << (cat <<eof)[> ss,>aa,> eof,ss,aa] 输入追加 cat <> /a.txt (> asa,> asfs,> afo,> efo)[asa,asfs,afo] 输入覆盖 cat </a.txt


标准输出:> 重定向覆盖(echo "abcabcabc" > /a.txt )[abcabcabc]>> 重定向追加(echo "liuchenyang" >> /a.txt)[abcabcabc liuchenyang]


混合输出:混合输出 ls &>>a.txt(把 ls 查到的目录下所有的内容追加的 a.txt 文件里)


标准错误:标准错误 2> (LS 2> /a.txt)[-bash: LS: 未找到命令]


举例:


yum -y install bind bind-utils &> /dev/null && echo "ok" || echo "not ok"(安装一个 bind 和 bind-utils 把安装时候输出的内容全部放到/dev/null,[/dev/null 相当于一个回收站,输出到这里面就直接清空]然后如果安装成功就输出 ok,安装失败就输出 not ok)



❀周期性计划任务和任务调度

详情请看:Linux周期性计划任务和任务调度以及举例一次性计划任务:at


启动:systemctl start atd



周期性计划任务:crond



设置永久的周期性计划任务:vim /etc/crontab 进入 vim /etc/crontab 编辑,保存退出即可;


重点:



语法:


分 时 日 月 周 用户 要执行的命令* * * * * root 命令


举例:


1.每周三清空一下/var/ftp 目录 0 0 * * 3 root rm -rf /var/ftp/*2.每月的第一个周一凌晨 2 点 30 对/var/www/html/进行打包 30 2 1-7 * 1 root tar -cvzf backup.tar.gz /var/www/html3.每月 1 日,重启一次 httpd 服务 0 0 1 * * root systemctl restart httpd4.每一分钟删除一个文件* * * * * root rm -rf /root/abc.txt5.每两分钟删除一个目录*/2 * * * * root rm -rf /appliaction/ceshi6.每 2 周查找目录并删除* * * * */2 root find / -name test -type d | xargs rm -rf


补充:uid 用户的唯一标识 gid 用户组的唯一标识 uuid 设备的唯一标识 pid 进程的唯一标识


任务调度:


<font><font color="red" size="5"><font><font color="blue"><font color="orrages"><font color="teal"><font color="teal"><code class="language-bash">&  将命令放入后台运行jobs  查看后台任务jobs -l  查看后台进程的pidfg 序号  将后台任务调度到前台ctrl+z  将前台任务暂停放到后台bg 序号  将后台暂停的任务继续执行ctrl+c  中断前台执行的任务</code></font></font></font></font></font></font></font>
复制代码


❀进程管理

详情请看:Linux进程管理


程序:存放在磁盘中的静态代码(文件)进程:在内存中允许运行的程序,动态的状态进程是资源调度最小的单位线程:线程是存在在进程中的线程(thread)是任务执行的最小单位


进程间资源隔离,线程间资源共用


ps 命令:



使用方法:


查看进程过滤出 nginx 的进程:ps -ef | grep nginx


netstat 命令:



使用方法:


查看端口,并过滤出自己想找的端口 netstat -anput | grep 8099


top 命令:


top 动态查看进程信息 uptime 查看 top 第一行 lscpu 查看 cpu 负载的核数 load average: 0.00, 0.01, 0.05 系统 1 分钟,5 分钟,15 分钟平均负载 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stCPU 使用情况进程需要占用系统资源(cpu,内存,磁盘,网络,显卡)CPU 密集型 IO 密集型 us 用户态 CPUsy 内核态 CPUni 优先级 id 空闲的 CPUwa 等待输入输出设备的 CPUhi 硬中断 si 软中断 st 虚拟化占用 CPU 资源 KiB Mem : 995896 total, 487280 free, 121580 used, 387036 buff/cachebuff 写缓冲 解决空间问题 cache 读缓存 解决速率问题


renice 优先级:renice 调整运行进程的优先级 renice -n 优先级等级 pid 进程优先级命令/程序只有 root 用户可以设置负值


nice 设置进程运行时的优先级


linux 系统中进程状态:



僵尸进程:


什么是僵尸进程:


子进程结束,父进程没有回收子进程


解决僵尸进程:


1.重新启动系统 2.杀死父进程,将僵尸进程变为孤儿进程,此时孤儿进程由系统中的 systemd 接管,会自动清理。kill -9 pid 根据进程的 pid 强制杀死某个进程


父进程派生子进程


pstree 查看进程树


yum provides pstree 直接下载不了 pstree,就可以利用这个命令找到 pstree 是哪个包


结束(杀死)进程:


kill PID 杀进程 killall 进程名 根据进程名杀进程 pkill 根据条件杀进程



常用的杀进程是:


kill -9 进程 pid


pgrep 命令:



pidof 进程名 根据进程查进程号


❀用户提权

详情请看:👉Linux su命令 – 切换用户、用户提权👈


su 切换用户 sudo - 随用户更改环境变量


语法格式:


su [选项] [用户名]


常用参数:



参考实例:


切换到 linuxcool 用户,但环境变量仍然是 root 用户的:


[root@linuxcool ~]# su linuxcool


切换到 linuxcool 用户,并改变为 linuxcool 用户环境变量:


[root@linuxcool ~]# su - linuxcool


变更帐号为 root 并传入 -f 参数给新执行的 shell:


[root@linuxcool ~]# su root -f


用户提权:


visudo 编辑 sudo 配置文件 root 用户(用户不带 %)%wheel 用户组(组带 %)


sudo -i 切换到 root 用户

❀文件系统-软连接、硬链接

详情请看:👉Linux文件系统ln-软连接、硬链接👈


ln 命令是 linux 系统中一个非常重要命令,英文全称是“link”,即链接的意思,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是 hard link,又称为硬链接;另一种是 symbolic link,又称为符号链接。


通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似 windows 一样的快捷方式。


inode:文件元数据-->权限 归属 时间 类型·block 位置 block:磁盘 IO 的最小单位 默认 4K=8 个扇区一个文件占用一个 inode,至少占用一个 block


目录本身就是特殊的文件目录的 block 存放的是目录下文件和目录的名字


硬链接与软链接(符号链接)ln


ll 命令查看结果,其中-rw-------1 后面有个 1 就是硬链接数硬链接是文件的另一个入口软连接类似于 windows 的快捷方式


硬链接与软连接的区别:


1.硬链接的 inode 号相同,软连接 inode 不同  diff 比较两个文件是否相同(返回信息是不同,不返回信息是相同)  vimdiff 比较两个文件是否相同 2.删除或重命名源文件对硬链接没有影响,软连接不可用。3.硬链接不能跨文件系统;软链接可以跨文件系统。4.目录不能创建硬链接;目录可以创建软链接 5.创建硬链接是 ln; 创建软连接是 ln -s


语法格式:


ln [参数] [源文件或目录] [目标文件或目录]


常用参数:



参考实例:


为源文件 file.txt 创建硬链接 file_1:


[root@linuxcool ~ ]# ln /root/dir/file.txt ./file_1


使用 ln 命令的“-s”参数来创建目录的符号链接,并使用 ls 命令来查看链接文件的详细信息:


[root@linuxcool ~]# ln -s dir file[root@linuxcool ~]# ls -l 总用量 4-rw-------. 1 root root 1138 3 月 11 14:48 anaconda-ks.cfgdrwxr-xr-x. 2 root root 36 4 月 3 08:47 testlrwxrwxrwx. 1 root root 4 4 月 3 08:54 file -> dir


使用 ln 命令的“-v”参数来输出命令的详细执行过程:


[root@linuxcool ~]# ln -v /root/dir/file.txt ./file_1 './file_1' => '/root/dir/file.txt'


使用 ln 命令的“-b”命令来创建目标文件的备份文件,并使用 ls 命令来查看:


[root@linuxcool]# ln -b /root/dir/file.txt ./file_1[root@linuxcool ~]# ls anaconda-ks.cfg file_1 file_1dir


相关命令:


1.df -Th 查看磁盘空间 2.df -Thi 查看 inode 情况 inode 耗尽引发的故障


1.删除不用的小文件 2.备份后,重新创建文件系统


tune2fs 文件路径 查看文件系统的信息 dumpe2fs 文件路径 查看文件系统的信息


❀日志管理

详情请看:👉Linux中的日志管理👈


日志:记录系统中相关的信息 系统日志 程序日志


/var/log 一般都存在这里面/var/log/messages 系统日志


从 CentOs6 开始,日志由系统中的 rsyslog 服务管理日志存放在/var/log 目录下


相关命令:


dmesg 查看内核和硬件相关的日志 last 查看用户登录的记录 lastlog 查看用户最后一次登录的时间 lastb 记录用户登录失败的信息 logrotate 实现日志轮割


日志的级别(9 个):



参考实例:


在周期计划性任务里写(crontab -e)cp file1 file1-$(date +%Y%m%d) && >file1【在周期计划性任务中,实现把当前目录下的 file1 复制一份重新创建一个叫 file1-时间(注意 date 里面的年月日..要加转义\)然后重定向清空 file1】在 crontab 中 %是有特殊含义的,表示换的意思。如果要用的话,必须进行转义 %,如经常用的 date+%Y%m%d在 crontab 中是不会执行的,应该换成 date+\%Y\%m\%d


syslog 管理:


系统的日志由服务 rsyslog 管理日志集中系统:


服务端 :


<font><font color="red" size="5"><font><font color="blue"><font color="orrages"><font color="teal"><font color="teal"><code class="language-bash">[root@nginx-1 ~]# vim /etc/rsyslog.conf  15 $ModLoad imudp 16 $UDPServerRun 514
[root@nginx-1 ~]#systemctl restart rsyslog 重启服务
#先安装yum -y install net-tools配置网络要用的比如ifconfig[root@nginx-1 ~]#netstat -anput|grep 514
#查看是否开放514号端口的服务 </code></font></font></font></font></font></font></font>
复制代码


客户端:


<font><font color="red" size="5"><font><font color="blue"><font color="orrages"><font color="teal"><font color="teal"><code class="language-bash">#添加服务端信息[root@nginx-2 ~]# vim /etc/rsyslog.conf    90 *.* @192.168.2.11:514      * 所有的服务 . 表示以上级别 * 所有级别     @ 表示UDP @@ 表示TCP   服务端ip:端口 
#重启rsyslog服务[root@nginx-2 ~]#systemctl restart rsyslog
#测试时使用tail -f 观察服务端/var/log/messages日志的变化[root@nginx-2 ~]#logger "123123" 产生一条日志测试 [root@nginx-2 ~]#tailf /var/log/messages</code></font></font></font></font></font></font></font>
复制代码


. 记录包含该等级及以上级别的信息.= 只记录当前等级的信息! 除了该等级都记录


❀网络管理

ifconfig 命令:


详情请看:👉Linux网络管理之ifconfig命令 – 显示或设置网络设备👈


ifconfig 查看或管理网络信息 ifconfig ens33 查看 ens33 信息 ifconfig ens33 192.168.2.100/24


语法格式:


ifconfig [参数]


常用参数:



参考实例:


显示网络设备信息:


[root@linuxcool ~]# ifconfigeth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C              inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0       inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1             RX packets:172220 errors:0 dropped:0 overruns:0 frame:0             TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0        collisions:0 txqueuelen:1000              RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)        Interrupt:185 Base address:0x2024  lo    Link encap:Local Loopback             inet addr:127.0.0.1 Mask:255.0.0.0            inet6 addr: ::1/128 Scope:Host            UP LOOPBACK RUNNING MTU:16436 Metric:1            RX packets:2022 errors:0 dropped:0 overruns:0 frame:0            TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0         collisions:0 txqueuelen:0             RX bytes:2459063 (2.3 MiB)       TX bytes:2459063 (2.3 MiB)
复制代码


启动关闭指定网卡:


[root@linuxcool ~]# ifconfig eth0 down[root@linuxcool ~]# ifconfig eth0 up 
复制代码


为网卡配置和删除 IPv6 地址:


[root@linuxcool ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/64[root@linuxcool ~]# ifconfig eth0 del 33ffe:3240:800:1005::2/64
复制代码


用 ifconfig 修改 MAC 地址:


[root@linuxcool ~]# ifconfig eth0 down[root@linuxcool ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE[root@linuxcool ~]# ifconfig eth0 up[root@linuxcool ~]# ifconfig eth1 hw ether 00:1D:1C:1D:1E [root@linuxcool ~]# ifconfig eth1 up
复制代码


配置 IP 地址:


[root@linuxcool ~]# ifconfig eth0 192.168.1.56 [root@linuxcool ~]# ifconfig eth0 192.168.1.56 netmask 255.255.255.0[root@linuxcool ~]# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
复制代码


ip 命令:


详情请看:👉Linux网络管理之ip命令 – 显示与操作路由👈


ip 网络管理命令 ip a 查看网卡信息 ip l 查看网络连接情况


语法格式:


ip [参数]


常用参数:



参考实例:


用 ip 命令显示网络设备的运行状态:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ip link list</code></font>
复制代码


使用-s 参数输出更详细的信息:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ip -s link list</code></font>
复制代码


显示核心路由表:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ip route list[root@linuxcool ~]# ip route show</code></font>
复制代码


显示邻居路由表:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ip neigh list[root@linuxcool ~]# ip neigh show</code></font>
复制代码


ss 命令:


详情请看:👉Linux网络管理之ss命令– 显示活动套接字信息👈


ss 查看网络链接


语法格式:


ss [参数]


常用参数:



参考实例:<./font>


显示 TCP 套接字:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ss -t -a State     Recv-Q     Send-Q     Local Address:Port     Peer Address:Port   LISTEN    0          128        0.0.0.0:ssh            0.0.0.0:*                                ESTAB     0          52         192.168.60.19:ssh      192.168.30.21:59321               LISTEN    0          128        *:websm                *:*               LISTEN    0          128        [::]:ssh               [::]:* </code></font>
复制代码


显示 UDP 套接字:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ss -u -aState     Recv-Q     Send-Q     Local Address:Port     Peer Address:Port              UNCONN    0          0          0.0.0.0:bootpc         0.0.0.0:*                 UNCONN    0          0          127.0.0.1:323          0.0.0.0:*                 UNCONN    0          0          [::1]:323              [::]:*  </code></font>
复制代码


显示套接字使用概况:


<font color="teal"><code class="language-bash">[root@linuxcool ~]# ss -sTotal: 185TCP:   4 (estab 1, closed 0, orphaned 0, timewait 0)Transport Total     IP        IPv6RAW       1         0         1        UDP       3         2         1        TCP       4         2         2        INET      8         4         4        FRAG      0         0         0        </code></font>
复制代码


netstat 命令:


详情请看:👉Linux网络管理之netstat命令– 显示网络状态👈


netstat 查看网络连接情况


语法格式:


netstat [参数]


常用参数:



参考实例:


显示详细的网络状况:


[root@linuxcool ~]# netstat -a
复制代码


显示当前户籍 UDP 连接状况:


[root@linuxcool ~]# netstat -nu
复制代码


显示 UDP 端口号的使用情况:


[root@linuxcool ~]# netstat -apu Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address  Foreign Address  State  PID/Program name    udp        0      0 0.0.0.0:bootpc          0.0.0.0:*      4000/dhclient       udp        0      0 localhost:323           0.0.0.0:*      3725/chronyd        udp6       0      0 localhost:323           [::]:*         3725/chronyd 
复制代码


显示网卡列表:


[root@linuxcool ~]# netstat -i Kernel Interface table Iface MTU Met  RX-OK  RX-ERR  RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500   0  181864   0      0       0     141278   0     0     0    BMRU lo   16436  0   3362    0      0       0     3362     0     0     0    LRU
复制代码


显示组播组的关系:


[root@linuxcool ~]# netstat -g IPv6/IPv4 Group Memberships Interface    RefCnt Group --------------- ------ --------------------- lo        1   ALL-SYSTEMS.MCAST.NET eth0      1   ALL-SYSTEMS.MCAST.NET lo       1   ff02::1 eth0      1   ff02::1:ff0a:b0c eth0          1   ff02::1
复制代码


hostname 命令:


详情请看:👉Linux网络管理之hostname命令 – 显示和设置系统的主机名👈


语法格式:


hostname [参数]


常用参数:



参考实例:


查看主机名:


hostname    查看主机名
复制代码


修改主机名:


hostname 主机名  修改主机名
#修改的主机名是临时生效的永久生效:1.修改配置文件/etc/hostname2.hostnamectl set-hostname 主机名
复制代码


查看主机 ip 地址:


[root@linuxcool ~]# hostname -I  查看主机的ip地址
复制代码


使用-a 参数显示主机别名:


[root@linuxcool ~]# hostname -a
复制代码


使用-i 参数显示主机的 ip 地址:


[root@linuxcool ~]# hostname -i
复制代码


使用-y 参数显示 NIS 域名:


[root@linuxcool ~]# hostname -y
复制代码


route 命令:


route 路由管理命令


详情请看:👉Linux网络管理之route命令 – 显示并设置路由👈


语法格式:


route [参数]


常用参数:



参考实例:


显示当前路由:


[root@linuxcool ~]# routeKernel IP routing tableDestination     Gateway      Genmask        Flags Metric Ref      Use Ifacedefault        _gateway      0.0.0.0         UG    100    0        0 ens192192.168.60.0    0.0.0.0      255.255.255.0   U     100    0        0 ens192
复制代码


添加一条路由记录:


[root@linuxcool ~]# route add -net 192.168.60.11 netmask 192.168.60.1 dev ens192
[root@linuxcool ~]# route add -net 192.168.3.0 netmask 255.255.255.0 ens33
复制代码


删除路由记录:


[root@linuxcool ~]#  route del -net 192.168.60.11 netmask 192.168.60.1 dev ens192 
[root@linuxcool ~]# route del -net 192.168.3.0 netmask 255.255.255.0 ens33
复制代码


添加和删除默认网关:


[root@linuxcool ~]# route add default gw 192.168.60.1[root@linuxcool ~]# route del default gw 192.168.60.1
复制代码


tcpdump 命令:


详情请看:👉Linux网络管理之tcpdump命令 – 监听网络流量👈


语法格式:


tcpdump [参数]


常用参数:



参考实例:


监视指定网络接口的数据包:


[root@linuxcool ~]# tcpdump -i eth1
复制代码


监视指定主机的数据包:


[root@linuxcool ~]# tcpdump host linuxcool
复制代码


截获主机 192.168.10.10 和主机 192.168.10.20 或 192.168.10.30 的通信:


[root@linuxcool ~]# tcpdump host 192.168.10.10 and \ (192.168.10.20 or 192.168.10.30 \)
复制代码


抓取 80 端口的 HTTP 报文,以文本形式展示:


[root@linuxcool ~]# tcpdump -i any port 80 -A
复制代码


traceroute 命令:


详情请看:👉Linux网络管理之traceroute命令 – 追踪数据包在网络上的传输时的全部路径👈


traceroute 跟踪路由


语法格式:


traceroute [参数] [域名或者 IP]


常用参数:



参考实例:追踪本地数据包到www.linuxprobe.com的传输路径:


[root@linuxcool ~]# traceroute www.linuxprobe.com
复制代码


跳数设置:


[root@linuxcool ~]# traceroute -m 7 www.linuxprobe.com
复制代码


显示 IP 地址,不查主机名 :


[root@linuxcool ~]# traceroute -n www.linuxprobe.com
复制代码


把探测包的个数设置为值 4:


[root@linuxcool ~]# traceroute -q 4 www.linuxprobe.com
复制代码


把对外发探测包的等待响应时间设置为 3 秒:


[root@linuxcool ~]# traceroute -w 3 www.linuxprobe.com
复制代码


ifup 开启网卡-激活网络接口


详情请看:👉Linux网络管理之网卡、网络接口开关设置👈


ifup 命令用于激活指定的网络接口。ifup 命令会去读取/etc/sysconfig/network-scripts/目录下的相关网络接口的配置文件,并根据配置文件的内容来激活该网络接口。


注意:网络接口名称必须是/etc/sysconfig/network-scripts/目录配置文件中设置的才可以。如果使用 ifconfig 命令改变了网络接口后,ifup 命令就不会识别了。因为 ifup 命令会对比当前网络的参数与/etc/sysconfig/network-scripts/中配置文件的内容是否相符。


语法格式:


ifup [网络接口]


参考实例:


激活网络接口 eth0:


[root@linuxcool ~]# ifup eth0
复制代码


ifdown 关闭网卡– 禁用网络接口


详情请看:👉Linux网络管理之网卡、网络接口开关设置👈


ifdown 命令用于禁用指定的网络接口。该命令会去读取/etc/sysconfig/network-scripts/目录下的相关网络接口的配置文件,并根据配置文件的内容来关闭该网络接口。


注意:网络接口名称必须是/etc/sysconfig/network-scripts/目录配置文件中设置的才可以。如果使用 ifconfig 命令改变了网络接口后,ifdown 命令就不会识别了。因为 ifdown 命令会对比当前网络的参数与/etc/sysconfig/network-scripts/中配置文件的内容是否相符。


语法格式:


ifdown [网络接口]


参考实例:


禁用网络接口 eth0:


[root@linuxcool ~]# ifdown eth0
复制代码


arp 地址解析协议


详情请看:👉Linux网络管理之arp命令 – 操纵系统arp缓存(地址解析协议)👈


语法格式:


arp [参数] [IP]


常用参数:



参考实例:


显示本机 arp 缓存中所有记录:


[root@linuxcool ~]# arpAddress       HWtype     HWaddress         Flags Mask          Iface    gateway       ether      00:03:0f:81:6b:f1    C                ens160
复制代码


以数字方式显示指定主机 arp 缓存条目:


[root@linuxcool ~]# arp -n 192.168.60.1Address           HWtype  HWaddress           Flags Mask         Iface192.168.60.1      ether   00:03:0f:81:6b:f1   C                  ens160
复制代码


删除接口 eth1 上的 192.168.60.1 的 arp 表中的项:


[root@linuxcool ~]# arp -i eth1 -d 192.168.60.1
复制代码


使用 eth1 的 MAC 地址回答 eth0 上的 192.168.60.2 的 arp 请求:


[root@linuxcool ~]# arp -i eth0 -Ds 192.168.60.2 eth1 pub
复制代码


journalctl 命令


详情请看:👉Linux—journalctl命令 – 查看日志👈


journalctl 查看所有日志


语法格式:


journalctl [参数]


常用参数:



参考实例:


查看所有日志:


[root@linuxcool ~]# journalctl 
复制代码


查看内核日志:


[root@linuxcool ~]# journalctl -k 
复制代码


查看系统本次启动的日志:


[root@linuxcool ~]# journalctl -b 
复制代码


查看 httpd 的日志:


[root@linuxcool ~]# journalctl -u httpd
复制代码


查看最近发生的 20 条日志:


[root@linuxcool ~]# journalctl -n 20
复制代码


追踪日志:


[root@linuxcool ~]# journalctl -f
复制代码


nmap 网络探测工具和安全和端口扫描器


详情请看:👉Linux—nmap、nc命令 –网络探测工具和安全和端口扫描器👈


语法格式:


nmap [参数]


常用参数:



参考实例:


扫描主机并跟踪路由:


[root@linuxcool ~]# nmap --traceroute www.linuxcool.com
复制代码


使用-p 参数探测 80、443 端口:


[root@linuxcool ~]# nmap -p80,443 www.linuxcool.com
复制代码


探测服务器的 1-10000 端口范围:


[root@linuxcool ~]# nmap -p1-10000 www.linuxcool.com
复制代码


使用-A 参数进行高级扫描:


[root@linuxcool ~]# nmap -A www.linuxcool.com
复制代码


nc 端口扫描 – 设置路由


详情请看:👉Linux—nmap、nc命令 –网络探测工具和安全和端口扫描器👈


语法格式:


nc [参数]


常用参数:



参考实例:


扫描 80 端口:


[root@linuxcool ~]# nc -nvv 192.168.3.1 80
复制代码


扫描 UDP 端口:


[root@linuxcool ~]# nc -u -z -w2 192.168.0.1 1-1000
复制代码


扫描 TCP 端口:


[root@linuxcool ~]# nc -v -z -w2 192.168.0.3 1-100
复制代码


history 查看历史记录


详情请看:👉Linux—history命令 –– 查看与操纵历史命令👈


语法格式:


history [参数] [目录]


常用参数:



参考实例:


查看所有的历史记录:


[root@linuxcool ~]# history
复制代码


显示最近的 10 条命令:


[root@linuxcool ~]# history 10  
复制代码


将本次登录的命令写入历史文件中:


[root@linuxcool ~]# history -w
复制代码


将命令历史文件中的内容读入到目前 shell 的 history 记忆中 :


[root@linuxcool ~]# history -r  
复制代码


将当前 Shell 会话的历史命令追加到命令历史文件中:


[root@linuxcool ~]# history -a  
复制代码


清空当前历史命令列表:


[root@linuxcool ~]# history -c 
复制代码


执行已经执行过又想执行的命令:


[root@linuxcool ~]# history    1  ls    2  vim a    3  ls    4  journalctl -d    5  journalctl -b[root@linuxcool ~]# !3abc 123 lcy linux history ml ss dd laks 111 vi go sl sd fsg a
复制代码


补充:


chage -d 0 用户名 首次登录设置密码


发布于: 刚刚阅读数: 3
用户头像

A-刘晨阳

关注

还未添加个人签名 2022-06-16 加入

还未添加个人简介

评论

发布
暂无评论
Linux常用基础命令(巨全)_Linux_A-刘晨阳_InfoQ写作社区