Linux操作系统
目录
46. 关于" groupmod,groupwd,groupdel "的命令
58. 关于" mount,umount,remount "的命令
63. 关于" kill,killall,pkill "的命令
3. 关于" /etc/passwd 用户基本信息文件 "的解释
4. 关于" /etc/shadow 用户密码文件 "的解释
5. 关于" /etc/group,/etc/gshadow "的解释
一、相关快捷键
1. 关于" ecs "的快捷键
① ecs + .(复制粘贴上一条命令的执行对象)
2. 关于" ctrl "的快捷键
① ctrl + c(废弃当前执行的命令)
② ctrl + l 或 clear(清屏)
③ ctrl + a(光标移动至行首)
④ ctrl + e(光标移动至行尾)
⑤ ctrl + u(根据光标位置清空至行首)
⑥ ctrl + w(删除一个单词,以空格为界限)
二、 相关命令
1. 关于" rm "的命令
① rm -rf /*(删除整个系统)
② rm test.txt(删除文件,需要回复y或n)
③ rm -r test(删除目录,需要回复y或n)
④ rm -rf test(强制删除目录,不需要回复)
2. 关于" ls "的命令
① ls(查看目录下的内容)
② ls -l(查看目录下的内容详细属性)
③ ls -lh(查看目录下的内容详细属性并人性化显示)
④ ls -ld(仅查看目录本身不显示目录下内容的详细属性)
⑤ ls -a(查看目录下所有内容,包括隐藏文件)
⑥ ls -i(查看目录下内容的inode号)
⑦ ls -R(递归查看目录下的内容)
3. 关于" exit,logout "的命令
① exit 或 logout(退出系统)
4. 关于" mkdir "的命令
① mkdir test1(创建新目录)
② mkdir test1 test2(连续创建多个目录)
③ mkdir /opt/test1 /opt/test2(指定在某路径下创建目录)
④ mkdir -p /opt/test1/test2/test3(递归创建多个目录)
5. 关于" touch "的命令
① touch test.txt(创建文件)
6. 关于" cd "的命令
① cd /opt(切换至opt目录)
② cd 或 cd~(返回家目录)
③ cd.(切换至当前目录)
④ cd..(切换至上一级目录)
⑤ cd -(在两个路径来回切换)
7. 关于" pwd "的命令
① pwd(打印当前目录的绝对路径)
8. 关于" rmdir "的命令
① rmdir test1(删除空目录)
9. 关于" cp "的命令
① cp test.txt /opt/abc.txt(复制目录或文件,并改名)
② cp -p test.txt /opt/abc.txt(保留源文件属性不变,如:修改时间、归属关系、权限)
③ cp -r q1 /opt/t1(复制该目录下所有子目录和文件)
10. 关于" mv "的命令
① mv test /opt(移动目录或文件,也支持改名)
11. 关于" cat "的命令
① cat /etc/sysconfig/network-scripts/ifcfg-ens*(查看网卡信息,cat只适合查看小的文件,过大往上滑不了)
② cat -n test.txt(用行号排序显示文件内容)
12. 关于" less "的命令
① less test.txt(查看文件,less适合查看内容较大的文件)
关于less操作界面的快捷键
① gg(跳到首行)
② G(跳到末行)
③ :n(精准定位到某行)
④ q(退出)
13. 关于" head "的命令
① head test.txt(查看文件,只显示开头10行内容)
② head -15 test.txt(显示开头15行内容)
14. 关于" tail "的命令
① tail test.txt(查看文件,只显示末尾10行内容)
② tail -15 test.txt(显示末尾15行内容)
③ tail -f test.txt(动态显示,用于观察日志)
15. 关于" lsblk "的命令
① lsblk(列出系统所有磁盘与磁盘内的分区)
② lsblk -d(仅列出磁盘本身,不列出磁盘内的分区)
③ lsblk -f(列出系统所有磁盘内分区的文件系统类型)
16. 关于" In "的命令
① ln -s /root/test /opt/abc(软连接,ln -s 源 目标,软连接可以跨分区,可以对目录或文件进行链接,源文件删除后链接文件不可用,源文件或链接文件会同步,一定要写目录或文件绝对路径,浅蓝色正确而红色闪动不可用,权限主要参照源文件)
② ln /root/test.txt /opt/abc.txt(硬连接,ln 源 目标,硬连接不可以跨分区,只可以对文件进行链接,源文件删除后链接文件仍然可用,白色正确可用,相当于cp -p,但拷贝不能相互同步内容)
17. 关于" --help "的命令
① ls --help(获取该命令帮助信息)
18. 关于" man "的命令
① man ls(获取该命令帮助信息,比--help更详细)
19. 关于" init "的命令
① init 3(切换运行级别3)
② init 0(关机)
③ cat /etc/inittab(查看默认哪个级别)
④ vim /etc/inittab
# multi-user.target : analogous to runlevel 3
# graphical.target : analogous to runlevel 5
# systemctl get-default :(后面加上参数可切换至3或5级别,永久性改变)
init N
① init 0(关机)
② init 1(单用户模式,root用户进行系统维护,系统里运行的所有服务都不会启动,必须在真机登录)
③ init 2(多用户模式,处于半正常状态,网络文件系统NFS没有被启动)
④ init 3(完全多用户模式,标准的运行状态)
⑤ init 4(系统未使用)
⑥ init 5(带图形化界面GUI的标准运行状态)
⑦ init 6(重启)
20. 关于" runlevel "的命令
① runlevel(查看运行状态,"3 1"表示从init3切换到init1)
21. 关于" halt "的命令
① halt(立刻关机)
22. 关于" shutdown "的命令
① shutdown -h now(立刻关机)
② shutdown -h 10(10分钟后自动关机)
23. 关于" reboot "的命令
① reboot(重启)
24. 关于" uname "的命令
① uname(查看系统内核)
② uname -r(查看系统内核版本号)
③ uname -rs(显示内核名字以及版本号)
25. 关于" swapoff "的命令
① swapoff -a(Swap内存交换空间,当物理内存不足时,可以使用硬盘空间充当内存使用,这是临时关闭命令)
26. 关于" nmcli "的命令
① nmcli connction up 网卡名(激活网卡)
② nmcli connection down 网卡名(关闭网卡)
③ nmcli connection reload 网卡名(重启网卡)
27. 关于" vim "的命令
① vim 文件名(打开文件并编辑,若文件不存在则创建,vi也可以但没颜色。yum -y install vim,安装vim命令)
vim test.txt
命令模式(启动vi/vim即进入命令模式)
① x(删除光标所在的单字符)
② C(删除光标后所在行所有内容)
③ dd(删除一整行,可配合数字键指定范围,相当于剪切)
④ yy(复制一整行,可配合数字键指定范围)
⑤ p(粘贴当前光标所在行下面)
⑥ u(恢复上一次修改内容)
⑦ 0(零)(光标移至行首)
⑧ $(光标移至行尾)
⑨ gg(跳转至文件第一行)
⑩ G(跳转至文件最后一行)
⑪ /关键词(搜索文件内关键词,n从上到下,N从下到上)
输入模式
① i(切换到输入模式,光标所在字符前插入)
② a(切换到输入模式,光标所在字符后插入)
③ o(切换到输入模式,光标所在标下面插入新行)
底线命令模式(命令模式按" : "即进入)
① :w(保存)
② :q(退出)
③ :q!(强制退出不保存)
④ :wq 或 :x 或 ZZ(保存并退出)
⑤ :wq!(强制保存并退出,适用于只读文件"'readonly' option is set (add ! to override)")
⑥ :set nu(显示行号)
⑦ :行号(快速跳转至某行)
⑧ :set nonu(取消显示行号)
⑨ :% s/old/new/g(全文替换old为new)
⑩ :nohl(取消高亮)
28. 关于" host "的命令
① host www.bing.com(解析公网域名成一个IP地址)
② host 13.107.21.200(反向解析IP地址成一个公网域名)
29. 关于" nslookup "的命令
① nslookup www.baidu.com(查询域名解析是否正常,当无法访问外网时)
30. 关于" alias,unalias "的命令
① alias lsl='ls -al'(临时设置命令别名)
② unalias lsl(取消别名)
③ vim /root/.bashrc(永久设置命令别名)
31. 关于" history "的命令
① history(显示命令历史记录)
② history -d 行数(删除某一行在history中)
③ history -c(清空history,但/root/.bash_history还存在)
④ history -a(马上同步到/root/.bash_history)
⑤ cat /root/.bash_history(历史命令在这存储,系统退出时才会保存)
⑥ vim /etc/profile(history默认只可用存储1000条,可以修改HISTSIZE=条数)
history
① !行数(调用历史记录命令)
② !vi(调用历史记录命令中vi开头命令,如有多个相同,即调用最近时间的)③ !!(重复执行上一次操作)
32. 关于" date "的命令
① date(显示系统日期与时间)
② date +%Y(显示年份)
③ date +%B(显示月份)
④ date +%d(显示日)
⑤ date +%H(显示时)
⑥ date +%M(显示分)
⑦ date +%S(显示秒)
⑧ date +%F(显示年-月-日)
⑨ date +%X(显示时:分:秒)
⑩ date +%F-%H-%M-%S(显示日期时间,综合使用)
⑪ date -s 2024-08-13 或 date -s 17:16:00 或 date -s '2024-08-13 17:16:00'(设置日期时间)
33. 关于" clock,hwclock "的命令
① clock(显示硬件时间,会提醒与date系统时间差了多少)
② hwclock -w(把硬件时间设置成系统时间)
③ hwclock -s(把系统时间设置成硬件时间)
34. 关于" cal "的命令
① cal(日历)
35. 关于" wc "的命令
① wc /root/test.txt(统计文件的行数、单词、字节并输出到屏幕)
② wc -c /root/test.txt(统计文件字节数)
③ wc -l /root/test.txt(统计文件行数)
36. 关于" echo "的命令
① echo 123(输出字符串)
② echo test > /etc/hostname(永久修改主机名,可结合重定向)
37. 关于" sleep "的命令
① sleep 5(系统休眠5秒钟)
② sleep 5s(系统休眠5秒钟)
③ sleep 5m(系统休眠5分钟)
④ sleep 5h(系统休眠5小时)
⑤ sleep 5d(系统休眠5天)
38. 关于" useradd "的命令
① useradd 新用户名(创建新用户,只有root管理员才能使用)
② useradd -u 新用户名 新UID(创建新用户并指定UID)
③ useradd -d 新目录 新用户名(创建新用户并指定新目录)
④ useradd -c yunwei,xx163.com 新用户名(创建新用户并指定用户描述信息)
⑤ useradd -s 解释器程序(/bin/sh或/bin/bash) 新用户名(创建新用户并指定用户的解释器程序)
⑥ useradd -G yunwei,kaifa,ceshi 新用户名(创建新用户并指定用户附加组)
⑦ useradd -s /bin/sh -u 2345 -c kaifa,abc@163.com -G yunwei,kaifa,ceshi 新用户名(综合使用)
39. 关于" id "的命令
① id root(查看用户的组信息)
40. 关于" mail "的命令
① mail(查看邮件,/var/spool/mail/用户邮件目录)
41. 关于" passwd "的命令
① passwd(设置用户密码)
② passwd 用户名(设置普通用户密码)
③ passwd -S 用户名(查看该用户名密码信息)
④ passwd -l 用户名(锁定该用户密码)
⑤ passwd -u 用户名(解锁用户密码)
⑥ passwd -d 用户名(删除该用户密码)
⑦ echo '密码' | passwd 用户名 --stdin(设置用户密码,非交互设置)
42. 关于" chage "的命令
① chage -d 0 用户名(强制用户下次登录修改密码)
43. 关于" su "的命令
① su user1(切换用户,但基本身份没有改变)
② su - user1(切换用户)
44. 关于" usermod,userdel "的命令
① usermod -u UID user(修改用户的UID)
② usermod -d 家目录 user(修改用户的家目录)
③ usermod -g 基本组 user(修改用户的基本组)
④ usermod -c 描述信息 user(修改用户的描述信息)
⑤ usermod -G 附加组 user(修改用户的附加组)
⑥ usermod -s 解释器程序 user(修改用户的解释器)
⑦ userdel 用户名(删除用户,但不会删除该用户的家目录)
⑧ userdel -r 用户名(删除用户并删除该用户的家目录)
45. 关于" groupadd "的命令
① groupadd developers(创建一个新的用户组,新组信息存储在/etc/group文件中)
46. 关于" groupmod,groupwd,groupdel "的命令
① groupmod -n 新组名 developers(修改组名)
② groupmod -g 新GID developers(修改组的GID)
③ groupwd -a user_name develops(将其他用户添加到develops组中)
④ groupwd -d user_name develops(将用户从工作组移除)
⑤ groupdel 组名(删除指定的工作组,主组不允许删除)
47. 关于" chmod "的命令
chmod
① 归属关系:u(user所有者),g(group所属组),o(other其他人)
② 权限类别:r读取(4),w写入(2),x执行(1),-没有权限(0)
① chmod u+x test.txt(将test.txt文件设为所有者可执行)
② chmod u-x test.txt(将test.txt文件设为所有者不可执行)
③ chmod u=rwx,g=rw,o=--- test.txt(将test.txt文件设为所有者可读可写入可执行,设为所属组可读可写入,设为其他人没有权限)
④ chmod 664 test.txt(将test.txt文件设为所有者可读可写入,设为所属组可读可写入,设为其他人可读)
⑤ chmod -R u+x /root(将/root目录下所有子文件和子目录权限为该目录一致,所有者可执行)
⑥ chmod -R 777 /root(将/root目录设为所有人可读可写入可执行)
⑦ ll -d /root(仅查看目录本身不显示目录下内容的详细属性)
chmod
文件(chmod权限只针对文件里的内容而不是文件本身)
① r:查看文件内容
② w:对文件内容拥有增删改权限
③ x:可以运行该文件
目录
① r:查看目录
② w:在该目录下创建文件、修改文件属性、删除任何用户文件
③ x:可以切换到该目录
① chmod u+s myscript.sh 或 chmod 4777 myscript.sh(SetUID,可对可执行文件添加SUID权限,user权限位的x权限会变成s,使其他普通用户执行该文件临时拥有user身份)
② chmod g+s myscript.sh 或 chmod 2777 myscript.sh(SetGID,可对可执行文件添加SGID权限,group权限位的x权限会变成s,使其他普通用户执行该文件时临时拥有group身份)
③ chmod o+t 目录名(Sticky BIT,只针对目录有效,对目录设置SBIT权限,只有root可以删除所有权限外,拥有rwx权限的其他普通用户也只能删除自己建立的文件,不能删除其他用户建立的文件。other权限位的x会变成t)
48. 关于" chown "的命令
① chown newuser:newgroup filename(同时改变文件所有者和所属组)
② chown newuser filename(改变文件所有者)
③ chown :newgroup filename(改变文件所属组)
49. 关于" umask "的命令
① umask(查看未来所有创建的目录特殊权限、所有者权限、所属组权限、其他人权限,0022代表777-022即u=rwx,g=rw,o=rw)
② umask -S(以u=rwx,g=rw,o=rw格式显示)
③ umask g+w(未来所有创建的目录,所属组都有可写权限)
50. 关于" setfacl "的命令
① setfacl -m u:ken:rw test.txt(单独为ken用户设置对test.txt的权限为读和执行)
② setfacl -x u:ken test.txt(清除ken用户对test.txt文件的acl规则)
③ setfacl -b test.txt(清除test.txt文件所有acl规则)
51. 关于" grep "的命令
① grep hello file.txt(在file.txt文件匹配出存在hello的行)
② grep -v hello file.txt(在file.txt文件输出不存在hello的行,相当于排除)
③ grep -n hello file.txt(以行号形式输出带有hello的行)
④ grep -v hello file.txt(忽略hello大小写输出带有hello的行)
⑤ grep ^h file.txt(输出匹配到以h开头的行)
⑥ grep o$ file.txt(输出匹配到以o结尾的行)
⑦ grep ^$ file.txt(输出空行)
52. 关于" find,-exec "的命令
① find /var/log -cmin -120 -exec cp {} /opt \(查找/var/log当前目录及子目录下120分钟前修改过的文件,并使用-exec交给下一条命令,因为管道符" | "无法在find使用,过滤出的文件相当于{},\代表额外处理命令结束)
② find /var/log -type f(查找类型是文件的,f文件、d目录、l链接文件)
③ find /var/log -name "*.log"(查找出以.log结尾的目录文件,与ls不同的是find也能寻找子目录)
④ find /var/log -iname test(按文件名查找并忽略大小写)
⑤ find /var/log -size +10k -type f(查找大于10k的文件,其中"+"代表大于,"-"代表小于,可以使用K、M、G)
⑥ find /var/log -size +10k -a -size -20k -type f(查找大于10k并且小于20k的文件,-a代表并且)
⑦ find /var/log -name "*.log" -o -size -10k -type f(查找以.log结尾的文件或小于10k的文件,-o代表或者)
⑧ find / -user 用户名(查找哪个用户的文件目录)
⑨ find /var/log -mtime +10 -type f(查找10天之前的文件,其中"+"代表多少天之前,"-"代表多少天之内,"0"代表24小时之内)
⑩ find /var/log -name *.log -type f -a -mtime +10 -exec cp /dev/null {} \(清空find查找到的文件内容)
53. 关于" df "的命令
① df(查看文件系统(分区)使用情况,有多少空闲磁盘空间)
② df -h(以易读的方式查看文件系统(分区)使用情况,有多少空闲磁盘空间)
③ df -T(查看文件系统(分区)使用情况并显示文件系统类型)
④ df -hT(查看分区的使用情况)
54. 关于" blkid "的命令
① blkid(显示系统中所有块设备的名称、UUID、文件系统类型)
55. 关于" du "的命令
① du /root(显示/root目录下各个子目录和文件的空间大小)
② du -h /root(显示/root目录下各个子目录和文件的空间大小,并以人类可读的方式显示)
③ du -sh /root(显示/root目录下各个子目录和文件空间的总大小,并以人类可读的方式显示,而ll -d只统计文件名字数据而不是里面)
56. 关于" fdisk "的命令
① fdisk -l /dev/nvme0n1(列出磁盘的分区信息,dos磁盘标签类型是MBR分区格式)
② fdisk /dev/nvme0n1 -> n(新增一个分区)-> p(主分区)/ e(扩展分区)-> 1-4(分区号) -> 2048-209715199(起始扇区) -> +大小K/M/G(起始开始要加多少空间,这个分区空间大小)
③ fdisk /dev/nvme0n1 -> m(获取命令帮助)
④ fdisk /dev/nvme0n1 -> d(删除一个分区) -> 1-2
⑤ fdisk /dev/nvme0n1 -> w(保存分区退出)
⑥ fdisk /dev/nvme0n1 -> q(不保存分区退出)
57. 关于" mkfs "的命令
① mkfs.xfs /dev/sdb1(将分区格式化为xfs类型文件系统类型)
② mkfs.ext4 /dev/sdb1(将分区格式化为ext4类型文件系统类型)
58. 关于" mount,umount,remount "的命令
① mount /dev/sdb1 挂载点目录(临时挂载文件系统类型到一个目录,如果该目录有数据挂载后会暂时隐藏,卸掉挂载点就会出现。一个目录只允许挂载一个分区。起存储作用是磁盘和内存,卸掉挂载点里的数据会一直存放在挂载点)
② umount 挂载点目录(卸载文件系统类型)
③ mount -a(依照/etc/fstab将所有未挂载的磁盘挂载上来)
④ mount -o 挂载参数 /dev/sdb1 /mnt/ntfs(根据挂载参数进行挂载)
⑤ remount(重新挂载文件系统)
59. 关于" gdisk "的命令
① gdisk -l /dev/nvme0n1(列出磁盘分区类型和分区信息)
② gdisk /dev/nvme0n1 -> n(新增一个分区)-> 1-128(分区号)-> 2048-209715199(起始扇区)-> +大小K/M/G(起始开始要加多少空间)
③ gdisk /dev/nvme0n1 -> ?(获取命令帮助)
④ gdisk /dev/nvme0n1 -> p(显示磁盘分区表,gpt磁盘标签类型是GPT分区格式)
⑤ gdisk /dev/nvme0n1 -> d(删除一个分区)
⑥ gdisk /dev/nvme0n1 -> w(保存分区退出)
⑦ gdisk /dev/nvme0n1 -> q(不保存分区退出)
60. 关于" pstree "的命令
① pstree(查看进程树)
# systemd(天赋进程)——NetworkManager——2*[{NetworkManager}]:
代表一个进程,父进程——子进程,"2*"代表两个线程
② pstree -p(显示进程PID)
③ pstree -a(显示完整的命令行)
④ pstree -u(列出每个进程所属账号名称)
⑤ pstree -pa 其他用户名(查看指定的用户进程树,并显示PID和命令行)
61. 关于" top "的命令
① top(动态系统性能及运行状态;键盘上下键翻行;h获取交互模式帮助;P按照CPU排序;M按照内存排序;q退出)
② top -d 5(指定5秒刷新一次,默认3秒)
top
第一行top字段
① 15:25:59(当前系统的本地时间)
② up 1:43(当前系统已经运行的时间)
③ 3 users(多少个终端在登录)
④ load average:0.00, 0.01, 0.05(CPU的1分钟,5分钟,15分钟之前平均负载量,根据CPU核数判断系统CPU负载量,1核CPU若高于1代表负载过高,以此类推)
第二行Tasks字段
① 115 total(当前系统中进程的总数量)
② 1 running(正在运行的进程数量)
③ 114 sleeping(正在睡眠的进程数量)
④ 0 stopped(正在停止的进程数量)
⑤ 0 zombie(僵尸进程数量,僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程)
kill -9 + 父进程号(杀死僵尸进程)
第三行%CPU(s)字段
① 0.0 us(用户进程占用的CPU百分比)
② 0.0 sy(系统进程占用的CPU百分比)
③ 0.0 ni(改变过优先级的用户进程占用的CPU百分比)
④ 100.0 id(空闲的CPU百分比)
⑤ 0.0 wa(等待输入/输出的进程的占用CPU百分比)
⑥ 0.0 hi(硬中断请求服务占用的CPU百分比)
⑦ 0.0 si(软中断请求服务占用的CPU百分比)
62. 关于" pgrep "的命令
① pgrep sshd(简洁过滤,通过程序名匹配其进程PID)
② ps aux | grep ssh(完整过滤)
③ pgrep -l ssh(输出PID与进程名)
④ pgrep -u 用户名(查找该用户的进程)
⑤ pgrep -x ssh(精准匹配名为”ssh”的进程)
⑥ pgrep -t tty1(查找指定终端进程PID)
63. 关于" kill,killall,pkill "的命令
① kill -l(列出可用进程信号)
② kill PID(杀死进程)= kill -15 PID
③ kill -1 PID(重启进程)
④ kill -9 PID(强制杀死进程,适用于僵尸进程)
⑤ killall sleep(强制杀死进程,比kill删的更彻底)
⑥ killall -9 -u 用户名(杀死所有关于sleep的命令)
⑦ pkill -9 -t 终端号(踢出指定终端用户)
64. 关于" last,lastb "的命令
① last(显示历史登录成功的用户信息)
② lastb(显示登录失败的用户信息)
65. 关于" netstat,ss "的命令
① netstat -antulp 或 ss -antulp(查看系统中启动的端口信息,前者是CentOS6后者是CentOS7,-a显示所有端口信息,-n以数字格式显示端口号,-t显示TCP连接的端口,-u显示UDP连接的端口,-l显示服务正在监听的端口信息,-p显示监听端口的程序名)
66. 关于" systemctl "的命令
① systemctl start 程序名(启动服务)
② systemctl restart 程序名(重启服务)
③ systemctl stop 程序名(停止服务)
④ systemctl enable 程序名(设置服务随机自启)
# to /usr/lib/systemd/system/vsftpd.service(会生成一个随机自启的控制文件)
⑤ systemctl disable 程序名(设置服务不随机自启)
⑥ systemctl status 程序名(查看服务状态)
# 最后一行 -14274 /usr/sbin/vsftpd(所在路径)/etc/vsftpd/vsftpd.conf(配置文件)
⑦ systemctl is-enabled 程序名(查看服务是否被设置随机自启)
三、相关解释
1. 关于" 后缀含义 "的解释
① .sh(脚本文件)
② .conf(配置文件)
③ .conf(配置文件)
④ .log(日志文件)
⑤ .rpm(软件包)
⑥ .tar(压缩包)
2. 关于" / 目录 "的解释
① /dev(存放硬件设备,如键盘、鼠标、硬盘、光盘等)
② /etc(存放用户信息文件,服务配置文件)
③ /home(系统普通用户的家目录)
④ /mnt 或 /media(光盘和镜像等预设的挂载点)
⑤ /var/log(随时都在变化的日志文件)
⑥ /usr/local(额外安装的软件存放目录)
3. 关于" /etc/passwd 用户基本信息文件 "的解释
① vim /etc/passwd(存放用户的基本信息的文件,每一行即代表一个用户)
vim /etc/passwd
# root : x : 0 : 0 : root : /root : /bin/bash
① 用户名
② 密码占位符,永远都是x
③ 用户的UID(UID 1~999系统伪用户,不能登录系统;UID 0超级管理员;UID 1000~65535普通用户,管理员创建的用户)
④ 基本组GID(基本组也称初始组,一个用户只允许有一个基本组。而附加组,一个用户可以允许有多个附加组)
⑤ 用户描述信息
⑥ 家目录
⑦ 解释器程序(用户→解释器→内核→硬件)
4. 关于" /etc/shadow 用户密码文件 "的解释
① cat /etc/shadow(存放用户的密码文件,/etc/passwd用户信息文件有多少用户则/etc/shadow用户密码文件就有多少)
vim /etc/shadow
① 用户名
② 密码,加密字符串,加密算法为SHA512。如果密码位是"⭐"或者"! !"表示密码已过期
③ 密码最后一次修改日期,日期从1970.1.1起每过一天时间戳加1
④ 密码修改的期限,如果该字段为10,则10天之内不可以修改密码
⑤ 密码有效期,过了这个有效期需要改密码并继续相同有效期
⑥ 密码到期前警告时间,与第⑤相比
⑦ 密码过期后宽限天数,登录必须重新改密码,与第⑤相比
⑧ 账户失效时间,日期从1970.1.1起
⑨ 保留
5. 关于" /etc/group,/etc/gshadow "的解释
vim /etc/group
① 组名
② 组密码占位符"x"
③ GID
④ 组里的附加用户
vim /etc/gshadow(存放组密码文件)
① 组名
② 组密码,若是"!"代表没密码
③ 组内管理员
④ 组里的附加用户
6. 关于" RAID "的解释
RAID:磁盘阵列,将多个独立的磁盘整合成一个逻辑磁盘(RAID盘),再把多块RAID盘组合成虚拟硬盘(卷组)
① RAID0:等量存储,至少由两块磁盘组成。能并行写入但没有冗余功能
② RAID1:完全备份,至少由两块磁盘组成。同一文档复制多份存储,具备完全冗余功能,但读写效率下降
③ RAID2:至少由三块磁盘组成。数据分散存储不同磁盘,采用检验算法,数据量比原有数据大且开销较大
④ RAID3:至少由三块磁盘组成。校验数据单独存放在另外一块磁盘
⑤ RAID4:至少由三块磁盘组成。与RAID3区别是数据分割方式不同
⑥ RAID5:至少由三块磁盘组成。校验数据分散写入不同磁盘
⑦ RAID6:至少由四块磁盘组成。2倍校验数据分散写入不同磁盘,采用双校验算法
⑧ RAID7:美国SCC公司专利
⑨ RAID10:是RAID0与RAID1组合,至少由四块磁盘组成。将4块磁盘组合成两组RAID1,再把两组RAID1组合成RAID0。缺点是可用容量是总容量的一半
7. 关于" ps,系统进程 "的解释
① ps aux(以Unix格式静态查看系统进程,a显示当前终端所有进程,u以用户格式输出,x当前用户在所有终端下进程)
② ps -ef(以Linux格式静态查看系统进程,-e显示系统所有进程,-f显示最完整的进程信息,-l以长格式输出信息)
① user:进程属于哪个用户
② PID:进程PID号
③ %CPU:进程占用CPU资源百分比
④ %MEM:进程占用物理内存百分比
⑤ VSZ:进程使用掉的虚拟内存量(单位kb)
⑥ RSS:进程占用固定内存量(单位kb)
⑦ TTY:进程在哪个终端运行,如果内核直接调用则显示"?",tty1-tty6表示本机终端登录用户的进程,pts/0-255则表示远程终端登录用户的进程
⑧STAT:进程状态R(Running)运行、S(Sleep)休眠、s包含子进程、T(stop)停止、Z(Zombie)僵尸表示子进程结束父进程没有回收+后台进程
ps -e -o ppid,start | grep Z(查找僵尸进程与其父进程)
⑨ START:进程启动时间
⑩ TIME:占用CPU运算时间
⑪ COMMAND:产生进程的命令
8. 关于" 查看已登录的用户信息 "的解释
① users(查看已登录的用户信息)
② who(查看已登录的用户信息,显示终端号)
③ w(查看已登录的用户信息,显示终端号)
w(第一行为top命令显示的第一行)
① USER:已登录的用户名
② TTY:用户登录终端编号
③ FROM:登录地址
④ LOGIN@:登录时间
⑤ IDLE:用户空闲时间,这是个计时器,一旦用户执行任何操作,该计时器就会被重置
⑥ JCPU:该终端所有进程占用CPU处理时间,包括正在运行和后台作业占用时间
⑦ PCPU:进程执行以后消耗的CPU时间
⑧ WHAT:当前正在执行的任务命令
9. 关于" 软件包类型 "的解释
软件类型
① 源码包
可以自定义安装路径,但需要手动编译且手动解决软件包的依赖关系
② 二进制包=RPM包
可以rpm安装,可以yum安装
被提取编译,但功能不能自定义,看不见源代码
vsftpd-3.0.2-25.el7.x86_64.rpm
① vsftpd(软件包名称)
② 3.0.2(软件包版本,主版本.次版本.修改版本)
③ 25(补丁次数)
④ el7(适合的系统,el7表示RHEL7 centos7也可以)
⑤ x86_64(适合的CPU架构)
⑥ rpm(rpm包扩展名)
10. 关于" rpm "的解释
RPM
①需要手动解决软件包之间的依赖关系
②安装的系统镜像文件也具备很多软件包也可以直接使用,在/dev/sr0中,软连接到/dev/cdrom,需要挂载才能查看Packages,如mount /dev/cdrom /mnt/centos
③下载软件包要在该包路径或指定其路径(/mnt/centos/Packages/包名)
④软件包分程序名vsftpd和软件包全名vsftpd-3.0.2-25.el7.x86_64.rpm
① rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm(安装软件包,其中i是安装,v是显示详细信息,h显示软件安装进度)
② rpm -q vsftpd(查询该软件是否安装)
③ rpm -qa(列出已经安装的软件包,可配合grep过滤)
④ rpm -qi vsftpd(列出该软件包的详细信息,包含版本与官网)
⑤ rpm -qf /etc/passwd(查询配置文件由哪个软件包产生)
⑥ rpm -ql vsftpd(列出与该软件包相关所有文件与目录的存放)
⑦ rpm -Uvh vsftpd-3.0.2-25.el7.x86_64.rpm(升级安装软件包,升级时要做好相关备份,先cp备份出来)
⑧ rpm -e vsftpd(卸载软件包,一般只会停止)
⑨ rpm -i --nodesps vsftpd-3.0.2-25.el7.x86_64.rpm(忽略依赖关系安装软件包)
⑩ rpm --import RPM-GPG-KEY-CentOS-7(导入红帽签名文件)
11. 关于" yum "的解释
yum
①提供众多软件包的仓库,并自动解决软件包之间复杂的依赖关系
②安装系统镜像文件会自带很多软件包在Packages中,可以自己创建一个文件并在文件中配置仓库参数,自己搭建一个本地仓库
③连接外网,使用网络仓库
本地仓库配置,本地yum源配置
① vim /etc/yum.repos.d/local.repo(必须在/etc/yum.repos.d路径下,且以.repo结尾)
[local](仓库名称,自定义英文,具有唯一性)
name=local_centos(仓库描述信息,不具备唯一性)
baseurl=file:///mnt/centos(指定软件仓库地址,file://用于指定本地软件包存放位置(即Packages的路径))
enabled=1(软件仓库是否启动,1启动,0不启动)
gpgcheck=0(是否检测软件包签名,0不检测,1检测)
配置本地yum源
① 进入"光盘CD/DVD"使用ISO映像文件(里面有包与镜像)
② lsblk(查看是否挂载成功)
# sr0 ll:0 1 6.6G 0 rom /run/media/root/RHEL-8-0-0-BaseOS-x86_64
上面的目录是/etc/yum.repos.d/local.repo中baseurl=file://中包的目录
③ yum repolist(验证本地yum源)
① yum install vim -y(安装软件包,-y自动回复yes)
② yum repolist(列出仓库可用软件包)
③ yum list(列出可按照的软件包包含已安装过的,也可以指定vim)
④ yum updata vim(升级软件包)
⑤ yum list vim --showduplicates(列出仓库中该软件所有版本)
⑥ yum -y install --setopt=obsoletes=0 vim(安装软件包,但此包不会替换掉已安装的旧版本)
⑦ yum remove vim(卸载软件包,不会卸载依赖包)
⑧ yum provides vim(搜索该命令由哪个软件包产生)
⑨ yum makecache(生成缓存,加快下载速度)
⑩ yum clean all(清除仓库缓存)
⑪ yum -y install lrzsz(可以把windows的软件传到Linux中)
网络仓库配置,网络yum源配置
① cd /etc/yum.repos.d/
② wget https://developer.aliyun.com/special/mirrors/notice(配置阿里软件仓库)
③ wget https://mirrors.163.com/.help/CentOS6-Base-163.repo(配置网易软件yum源)
④ yum -y install yum-priorites(安装yum-priorities插件,当同时具有本地yum源和网络yum源,从本地安装更快。下载完插件 vim /etc/yum.repos.d/local.repo并在最后一行加priority=1,优先级为1-99之间)
四、相关操作
1. 关于查看" CPU,内存信息 "的操作
① cat /proc/cpuinfo 或 lscpu(查看CPU信息)
② cat /proc/meminfo 或 free(查看内存信息)
③ free -h(查看内存信息并以K、M、G显示)
2. 关于查看,修改,重启" 网卡信息 "的操作
① cat /etc/sysconfig/network-scripts/ifcfg-ens*(查看网卡信息)
# DEVICE="ens32"(网卡名字)
# ONBOOT="yes"(开机或重启时是否启动网卡,需要等于yes)
# IPADDR="192.168.0.80"(IP地址)
# PREFIX="24"(子网掩码)
# GATEWAY="192.168.0.254"(网关)
② ifconfig 或 ip a(查看网卡参数信息。yum -y install net-tools,安装软件包,该包提供ifconfig)
③ nmcli connection modify 网卡名 ipv4.method manual ipv4.addresses IP地址/掩码 conncetion.autoconnect yes(修改网卡的IP地址)
# numcli connection modify(修改)
# 网卡名 ipv4.method(配置ipv4地址方法)
# manual(手动配置)
# ipv4.addresses(ipv4地址)
# IP地址/掩码 connction.autoconnect yes(开机自动连接)
④ systemctl restart network(重启网络)
⑤ ifdown ens32 + ifup ens32(重启网卡)
3. 关于查看,修改" 主机名 "的操作
① cat /etc/hostname 或 hostname(查看主机名)
② hostname 新主机名(临时修改主机名,需要重新登录生效,但/etc/hostname配置文件没改变)
③ hostnamectl set-hostname 新主机名(永久修改主机名,需要重新登录生效,/etc/hostname发送改变则永久生效)
4. 关于" 管道符 "的操作
① head /root/test.txt | tail -5(管道符,将前面输出的开头10行命令只输出后5行)
5. 关于" 重定向 "的操作
① cat -n /etc/passwd > test.txt(重定向操作,前面命令的输出结果写入到后面文件中,也具备创建新文件功能)
重定向
① >(重定向输出,反复重定向会覆盖,只收集正确的输出)
② >>(重定向输出,可追加,只收集正确的输出)
③ 2>(只收集错误输出,覆盖)
④ 2>>(只收集错误输出,追加)
⑤ &>(正确错误的输出都收集,覆盖)
⑥ &>>(正确错误的输出都收集,追加)
⑦ <(输入重定向,覆盖)
⑧ <<(输入重定向,追加)
6. 关于" 用户模板目录 "的操作
① ls -a /etc/skel(/etc/skel是用户模板目录,为新建用户提供统一的初始化环境,需要把隐藏目录找出来)
7. 关于查看" 解释器 "的操作
① cat /etc/shells(查看解释器,有/bin/sh的Unix和/bin/bash解释器)
8. 关于查看" 用户的默认值信息 "的操作
① vim /etc/default/useradd(存放用户的默认值信息,如用户默认组、用户家目录、默认使用什么解释器)
9. 关于如何" 匹配多个字符 "的操作
① ls /var/log/*[0-9]*(匹配中间存在0至9的文件)
② touch test{1..100}(连续创建100个文件)
③ ls /etc/*{a,b,c}(匹配存在a、b和c的文件目录,不需abc连在一起)
10. 关于" 解压缩文件 "的操作
① gzip 文件名(压缩文件,格式为.gz,压缩后大小最大,速度最快)
② bzip2 文件名(压缩文件,格式为.bz2,压缩后大小中等)
③ xz 文件名(压缩文件,格式为.xz,压缩后大小最小,速度最慢)
④ gzip -d 文件名(解压缩.gz文件)
⑤ bzip2 -d 文件名(解压缩.bz2文件)
⑥ xz -d 文件名(解压缩.xz文件)
⑦ zcat 文件名.gz(查看压缩文件)
⑧ bzcat 文件名.bz2(查看压缩文件)
⑨ xzcat 文件名.xz(查看压缩文件)
⑩ tar -cf opt.tar /opt(打包/opt目录为opt.tar文件,-c创建打包文件,-f指定打包后的名称)
⑪ tar -czf log.tar.gz /car/log(调用gzip压缩工具打包/var/log目录为log.tar.gz文件,-z调用gzip压缩工具、-J调用xz压缩工具、-j调用bzip2压缩工具)
⑫ tar -tf log.tar.gz(列出打包文件的内容,-t列出内容)
⑬ tar -xf log.tar.gz(解压打包文件)
⑭ tar -xf log.tar.gz -C /opt(解答打包文件并指明解压路径)
⑮ tar -vczf log.tar.gz /var/log(显示详细信息,会告诉你对哪些文件进行了压缩)
11. 关于设置" 开机自动挂载 "的操作
vim /etc/fstab
# 开机自动挂载 /dev/nvme0n1 / xfs defaults 0 0
① 挂载的设备路径
② 挂载点目录
③ 设备系统文件类型
④ 挂载参数
⑤ 是否对文件系统进行备份,0不备份,1备份(一般为0)
⑥ 是否检查文件系统顺序,0代表不检查,1的优先权最高(一般为0)
12. 关于" 卷组,逻辑卷 "的操作
多个逻辑卷=卷组LVM(由多个物理分区组成)
① vgcreate 卷组名 /dev/sdb2 /dev/sdb3(创建卷组,选的物理分区一般都是空的且没挂载点)
② vgdisplay 卷组名(查看卷组)
③ vgs(查看卷组)
④ lvcreate -L 大小 -n 逻辑卷名 卷组名(创建逻辑卷)
⑤ lvdisplay /dev/卷组名/逻辑卷名(查看逻辑卷)
⑥ lvs(查看逻辑卷)
⑦ mkfs.xfs /dev/卷组名/逻辑卷名(xfs格式化文件系统)
⑧ mount /dev/卷组名/逻辑卷名 挂载点目录(挂载逻辑卷)
⑨ df -h(查看分区使用情况)
⑩ vim /etc/fstab(开机自动挂载)
⑪ mount -a(参照/etc/fstab将没挂载的磁盘分区挂载上来)
lvextend -L +大小K/M/G 逻辑卷挂载目录(扩展逻辑卷,前提是卷组有空间)
① vgs(查看卷组空间)
② lsblk(列出所有分区,将需要的分区加入卷组)
③ vgextend 卷组名 /dev/sdb5 /dev/sdc(扩展卷组)
④ lvs(查看逻辑卷空间)
⑤ df -h(查看分区使用情况发现后面扩展的空间没成功,因为没文件系统)
⑥ xfs_growfs /逻辑卷挂载目录(扩容xfs设备)
⑦ resize2fs /dev/卷组名/逻辑卷名(扩容ext3/ext4设备)
缩容逻辑卷(先缩容文件系统 -> 再缩容逻辑卷空间并需要卸载挂载点,使用lvreduce命令)
删除逻辑卷(要卸载挂载点)
① umount /mnt/databse
② e2fsck -f /dev/datastore/database(检查)
③ resize2fs /dev/datastore/database 6G(调整文件系统)
④ lvreduce -L 6G /dev/datastore/database(缩容逻辑卷)
⑤ umount /mnt/database
⑥ lvremove /dev/datastore/database(删除逻辑卷)
删除pv物理卷(要删除lv逻辑卷 -> 删除vg卷组 -> 删除pv物理卷,但分区文件系统还存在,重新格式化分区数据会丢失)
① rpm -q lvm2
② pvcreate /dev/sda1 /dev/sdc1
③ pvs 或 pvdisplay(查看)
④ vgcreate -s 16M(指定PE块大小16M,默认8M) datastore /dev/sdb1 /dev/sdc1
13. 关于" 放入后台运行 "的操作
① sleep 5 &(将该进程放入后台运行)
② jobs -l(查看后台进程列表)
③ fg %1(进程编号,将后台进程恢复至前台运行)
④ ctrl + z(挂起当前进程并放入后台)
⑤ bg %1(进程编号,激活被放入后台的进程)
14. 关于" 源码包安装 "的操作
① wget http://nginx.org/download/nginx-1.20.2.tar.gz(从官网复制链接下载源码包,并根据官方给到文档依次下载源码包的依赖包,直接yum安装依赖包)
② tar -xf nginx-1.20.2.tar.gz(解压源码包)
③ cd nginx-1.20.2(进入源码包路径)
④ ./configure --help(获取帮助文档)
⑤ ./configure --prefix=/usr/local/nginx(安装在某个路径 检测系统环境)
⑥ make(进行编译,将源码包变成二进制包=RPM包)
⑦ make install(安装软件包)
⑧ rm -rf /usr/local/nginx(卸载源码包)
⑨ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gizp_static_module(修改configure配置,也需添加原先有的并重新编译make后复制覆盖原先的,不需要make install)
15. 关于" 配置网卡 "的操作
服务器设置 -> 网络适配器 -> 桥接模式
编辑 -> 虚拟网络编辑器 -> VMnet0 -> 已桥接位置改为本机
① ifconfig -a
② nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.9.22.203/24 ipv4.gateway 10.9.22.1 connection.autoconnect yes connection.interface-name ens33(ipv4.dns)
③ nmcli connection reload
④ nmcli connection down ens33
⑤ nmcli connection up ens33
16. 关于" 放通防火墙端口协议 "的操作
① firewall-cmd --permanent --zone=public --add-port=22/tcp
② firewall-cmd --reload