Linux加强篇002-部署Linux系统

简介: 山重水复疑无路,柳暗花明又一村

一、前言

悟已往之不谏知来者之可追实迷途其未远觉今而昨非。舟遥遥以轻飏风飘飘而吹衣。问征夫以前路恨晨光之熹微

第一版我已经全部放到我的精选里了,大家可以点开我的头像主页,选择精选观看,本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。

第一章写完感觉挺简单的,没想到第二章直接爆炸,居然写了两天,怕大家看不下去,推荐一首天王的歌,边听边学:<周杰伦 - 夜曲>,虽然大家做着一样的事情,但是不同的阶段还是会有不一样的感受的,希望这段学习的旅程能给大家一些思考,不要麻木做事,

2.1shell语言

英文中的壳叫作Shell,我们在行业中也将用户终端程序称之为Shell,方便好记。Shell就是终端程序的统称,它充当了人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端程序,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是Bash(Bourne-Again SHell)解释器,这个Bash解释器主要有以下4项优势:通过上下方向键来调取执行过的Linux命令;命令或参数仅需输入前几位就可以用Tab键补全;具有强大的批处理脚本;具有实用的环境变量功能。

2.2执行命令的必备知识

常见的执行Linux命令的格式是:命令名称     [命令参数]     [命令对象]

命令名称:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。

命令参数:用于对命令进行调整,让“修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。

Linux命令参数的长格式与短格式示例

长格式 man --help
短格式 man -h

切换到root用户下,体验一下man命令

[centos8@localhost root]$ su -

Password:  

Last login: Mon Nov  6 16:58:17 PST 2023 on pts/0

[root@localhost ~]#  

[root@localhost ~]# man man

image.png

man命令中常用按键

按键 作用
空格键 向下翻一页
PaGe down 向下翻一页
PaGe up 向上翻一页
home 直接前往首页
end 直接前往尾页
/ 从上至下搜索某个关键词,如“/linux”
? 从下至上搜索某个关键词,如“?linux”
n 定位到下一个搜索到的关键词
N 定位到上一个搜索到的关键词
q 退出帮助文档

man命令中帮助信息结构和意义

结构名称 代表意义
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示(附带简单说明)
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式

Tab键实现对命令、参数或文件的内容补全,两次tab可以调出所有可能的命令

image.png

Ctrl+C组合键终止当前进程的运行

以下命令执行效果是每1s刷新一次系统负载情况,直到按下Ctrl+c组合键时才停止运行。

[root@localhost ~]# watch -n 1 uptime

image.png

+

Ctrl+D组合键:键盘输入结束。

Ctrl+L组合键:清空当前终端中已有的内容。

2.3 常用系统工作命令

echo命令:用于在终端设备上输出字符串或变量提取后的值,语法格式为“echo [字符串] [$变量]”

字符串

[root@localhost ~]# echo weihongbin

weihongbin

$变量

[root@localhost ~]# echo $SHELL

/bin/bash

date命令:用于显示或设置系统的时间与日期,语法格式为“date [+指定的格式]”

参数 作用
%S 秒(00~59)
%M 分钟(00~59)
%H 小时(00~23)
%I 小时(00~12)
%m 月份(1~12)
%p 显示出AM或PM
%a 缩写的工作日名称(例如:Sun)
%A 完整的工作日名称(例如:Sunday)
%b 缩写的月份名称(例如:Jan)
%B 完整的月份名称(例如:January)
%q 季度(1~4)
%y 简写年份(例如:20)
%Y 完整年份(例如:2020)
%d 本月中的第几天
%j 今年中的第几天
%n 换行符(相当于按下回车键)
%t 跳格(相当于按下Tab键)

默认格式

[root@localhost ~]# date

Mon Nov  6 17:27:55 PST 2023

“年-月-日 小时:分钟:秒”

[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"

2023-11-06 17:29:16

设置为2020年11月1日8点30分

[root@localhost ~]# date -s "20231107 9:34:00"

Tue Nov  7 09:34:00 PST 2023

参数%j可用来查看今天是当年中的第几天

[root@localhost ~]# date "+%j"

311

timedatectl命令:用于设置系统的时间,语法格式为“timedatectl [参数]”

timedatectl命令参数以及作用

参数 作用
status 显示状态信息
list-timezones 列出已知时区
set-time 设置系统时间
set-timezone 设置生效时区

查看系统时间与时区

[root@localhost ~]# timedatectl status  

              Local time: Tue 2023-11-07 10:59:14 PST

          Universal time: Tue 2023-11-07 18:59:14 UTC

                RTC time: Tue 2023-11-07 03:06:47

               Time zone: America/Los_Angeles (PST, -0800)

System clock synchronized: no

             NTP service: active

         RTC in local TZ: no

时区不是上海(Asia/Shanghai),可以手动进行设置

[root@localhost ~]# timedatectl set-timezone Asia/Shanghai  

网络授时NTP:编辑文件 "/etc/ntp.conf",根据情况修改文件内容为:

driftfile  /var/lib/ntp/drift

pidfile   /var/run/ntpd.pid

logfile /var/log/ntp.log

restrict    default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1

server 127.127.1.0

fudge  127.127.1.0 stratum 10

server ntp.aliyun.com iburst minpoll 4 maxpoll 10

restrict ntp.aliyun.com nomodify notrap nopeer noquery

查看一下时间是否准确:date

reboot命令:用于重启系统

[root@localhost ~]# reboot

poweroff命令:用于关闭系统

[root@localhost ~]# poweroff

wget命令:用于在终端命令行中下载网络文件,语法格式为“wget [参数] 网址”

wget命令中的参数以及作用

参数 作用
-b 后台下载模式
-P 下载到指定目录
-t 最大尝试次数
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等
-r 递归下载

递归下载并存到指定网址目录

[root@localhost ~]# wget -r -p https://**

ps命令:用于查看系统中的进程状态,语法格式为“ps [参数]”

ps命令中的参数以及作用

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程

Linux系统中有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止

R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该   状态。

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)多线程(l)5种补充形式

执行ps aux命令

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程ID号 运算器占用率 内存占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数
root 1 0.0 0.5 244740 10636 ? Ss 07:54 0:02


root 2 0.0 0.0 0 0 ? S 07:54 0:00


root 3 0.0 0.0 0 0 ? I< 07:54 0:00


root 4 0.0 0.0 0 0 ? I< 07:54 0:00


root 5 0.0 0.0 0 0 ? I< 07:54 0:00


root 6 0.0 0.0 0 0 ? I< 07:54 0:00


root 7 0.0 0.0 0 0 ? S 07:54 0:00


root 8 0.0 0.0 0 0 ? I 07:54 0:00


root 9 0.0 0.0 0 0 ? S 07:54 0:00


pstree命令:用于以树状图的形式展示进程之间的关系

[root@localhost ~]# pstree

systemd─┬─ModemManager───2*[{ModemManager}]

       ├─NetworkManager───2*[{NetworkManager}]

       ├─VGAuthService

       ├─3*[abrt-dump-journ]

       ├─abrtd───2*[{abrtd}]

       ├─alsactl

       ├─anacron

       ├─atd

       ├─auditd─┬─sedispatch

       │        └─2*[{auditd}]

       ├─avahi-daemon───avahi-daemon

top命令:用于动态地监视进程活动及系统负载等信息

image.png

第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。

第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。

第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。

nice命令:用于调整进程的优先级,语法格式为“nice优先级数字 服务名称”

PR和NI值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高

-g 匹配进程组ID

-n 设置优先级别

-p 匹配进程ID

-u 匹配用户ID

[root@bogon ~]# nice -n -20 bash

pidof命令:用于查询某个指定服务进程的PID号码值,语法格式为“pidof [参数] 服务名称”

每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程

[root@bogon ~]# pidof sshd

1861 1843 1046

kill命令:用于终止某个指定PID值的服务进程,语法格式为“kill [参数] 进程的PID”

使用kill命令把上面用pidof命令查询到的PID所代表的进程终止掉

[root@bogon ~]# kill 2156

有时系统会提示进程无法被终止,此时可以加参数-9,表示最高级别地强制杀死进程

[root@bogon ~]# kill -9 2156

killall命令:用于终止某个指定名称的服务所对应的全部进程,语法格式为“killall [参数] 服务名称”

[root@bogon ~]# pidof sshd

1861 1843 1046

[root@bogon ~]# killall sshd

[root@bogon ~]# pidof sshd

2.4 系统状态检测命令

ifconfig命令:用于获取网卡配置与网络状态等信息,语法格式为“ifconfig [参数] [网络设备]”主要查看的就是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量(即下面红色的信息内容):

[root@bogon ~]# ifconfig  

ens160: flags=4163  mtu 1500

       inet 192.168.227.134  netmask 255.255.255.0  broadcast 192.168.227.255

       inet6 fe80::20c:29ff:fe57:4d51  prefixlen 64  scopeid 0x20

       ether 00:0c:29:57:4d:51  txqueuelen 1000  (Ethernet)

       RX packets 2178  bytes 194630 (190.0 KiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 1286  bytes 855375 (835.3 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

uname命令:用于查看系统内核版本与系统架构等信息,语法格式为“uname [-a]”一般要固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息:

[root@bogon ~]# uname -a

Linux bogon 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

查看当前系统版本的详细信息:

[root@bogon ~]# cat /etc/redhat-release  

CentOS Linux release 8.5.2111

uptime命令:用于查看系统的负载信息,显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况(下面红色的信息部分),负载值越低越好(负载值保持在1左右,在生产环境中不要超过5就好):

[root@bogon ~]# uptime  

10:01:39 up  1:09,  1 user,  load average: 0.00, 0.00, 0.00

free命令:用于显示当前系统中内存的使用量信息,语法格式为“free [-h]”在使用free命令时,可以结合使用-h参数以更人性化的方式输出当前内存的实时使用量信息:

[root@bogon ~]# free -h


内存总量 已用量 空闲量 共享使用的内存量 缓存的内存量 可用量

             total        used        free      shared  buff/cache   available

Mem:          1.7Gi       335Mi       1.0Gi       9.0Mi       432Mi       1.3Gi

Swap:         2.0Gi          0B       2.0Gi

who命令:用于查看当前登入主机的用户终端信息,有远程用户,还会显示出来访者的IP地址

[root@bogon ~]# who

登陆的用户名 终端设备

登陆到系统的时间(远程IP)

root     pts/0        2023-11-08 08:54 (192.168.227.1)

last命令用于调取主机的被访记录

[root@bogon ~]# last

root     pts/0        192.168.227.1    Wed Nov  8 08:54   still logged in

reboot   system boot  4.18.0-348.el8.x Wed Nov  8 08:52   still running

root     pts/0        192.168.227.1    Tue Nov  7 08:57 - crash  (23:54)

root     tty1                          Tue Nov  7 08:57 - crash  (23:55)

ping命令:用于测试主机之间的网络连通性,语法格式为“ping [参数] 主机地址”ping一下自己(上方红色ip)

ping命令中参数及作用

参数 作用
-c 总共发送次数
-l 指定网卡名称
-i 每次间隔时间(秒)
-W 最长等待时间(秒)

[root@bogon ~]# ping -c 2 192.168.227.134

PING 192.168.227.134 (192.168.227.134) 56(84) bytes of data.

64 bytes from 192.168.227.134: icmp_seq=1 ttl=64 time=0.055 ms

64 bytes from 192.168.227.134: icmp_seq=2 ttl=64 time=0.072 ms

--- 192.168.227.134 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1004ms

rtt min/avg/max/mdev = 0.048/0.049/0.050/0.001 ms

tracepath命令:用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式为“tracepath [参数] 域名”使用tracepath命令追踪数据包到达目的主机时途中的所有路由信息,以分析是哪台设备出了问题:

[root@bogon ~]# tracepath www.baidu.com

1?: [LOCALHOST]                      pmtu 1500

1:  bogon                                                 0.284ms  

1:  bogon                                                 0.246ms  

2:  no reply

netstat命令:用于显示如网络连接、路由表、接口状态等的网络相关信息,语法格式为“netstat [参数]”可以查看到网络状态的方方面面信息:

netstat命令中参数及作用

-a 显示所有连接中的Socket
-p 显示正在使用的Socket信息
-t 显示TCP协议的连接状态
-u 显示UDP协议的连接状态
-n 使用IP地址,不使用域名
-l 仅列出正在监听的服务状态
-i 显示网卡列表信息
-r 显示路由表信息

显示详细的网络状况:

[root@bogon ~]# netstat -a

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State      

tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN      

tcp        0      0 bogon:domain            0.0.0.0:*               LISTEN      

tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      

tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN      

tcp        0      0 localhos:x11-ssh-offset 0.0.0.0:*               LISTEN      

tcp        0    172 bogon:ssh               bogon:57126             ESTABLISHED

tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN      

tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      

tcp6       0      0 localhost:ipp           [::]:*                  LISTEN      

tcp6       0      0 localhos:x11-ssh-offset [::]:*                  LISTEN      

udp        0      0 bogon:domain            0.0.0.0:*                          

udp        0      0 0.0.0.0:bootps          0.0.0.0:*  

显示网卡列表:

[root@bogon ~]# netstat -i

Kernel Interface table

Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

ens160           1500     3820      0      0 0          1913      0      0      0 BMRU

lo              65536       26      0      0 0            26      0      0      0 LRU

virbr0           1500        0      0      0 0             0      0      0      0 BMU

history命令:用于显示执行过的命令历史,语法格式为“history [-c]”

[root@bogon ~]# history  

   1  ll

   2  pidof sshd

   3  ifconfig  

   4  uname -a

   5  cat /etc/redhat-release  

历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件

[root@bogon ~]# cat ~/.bash_history

ll

清空当前用户在本机上执行的Linux命令历史记录信息:

[root@bogon ~]# history -c

“!编码数字”的命令格式重复执行某一次的命令记录:

[root@bogon ~]# history

 106  ll

[root@bogon ~]# !106

ll

total 2167564

-rw-r--r--.   1 root    root     587202560 Nov  8 15:53 560

-rw-------.   1 root    root          2788 Nov  9  2023 anaconda-ks.cfg

sosreport命令:用于收集系统配置及架构信息并输出诊断文档,简单收集系统的运行状态和服务配置信息,红色的部分是收集好的资料压缩文件以及校验码,将其发送给技术支持人员即可:

[root@bogon ~]# sosreport  

Please note the 'sosreport' command has been deprecated in favor of the new 'sos' command, E.G. 'sos report'.

Redirecting to 'sos report '

sosreport (version 4.1)

This command will collect diagnostic and configuration information from

this CentOS system and installed applications.

An archive containing the collected information will be generated in

/var/tmp/sos.wasb39e_ and may be provided to a CentOS support

representative.

Any information provided to CentOS will be treated in accordance with

the published support policies at:

       Community Website : https://www.centos.org/

The generated archive may contain data considered sensitive and its

content should be reviewed by the originating organization before being

passed to any third party.

No changes will be made to system configuration.

Press ENTER to continue, or CTRL-C to quit.

此处按下回车键进行确认

Please enter the case id that you are generating this report for []:  此处按下回车键进行确认

Setting up archive ...

Setting up plugins ...

...

Your sosreport has been generated and saved in:

/var/tmp/sosreport-bogon-2023-11-08-xvluhty.tar.xz

Size 15.10MiB

Owner root

sha256 83cef5b4398ad35aa4c06c3a0cbcfb2bacefc0faa2c03beb6df84220a34832d6

Please send this file to your support representative.

2.5查找定位文件命令

pwd命令:用于显示用户当前所处的工作目录

[root@bogon ~]# pwd

/root

cd命令:用于切换当前的工作路径,语法格式为“cd [参数] [目录]”“cd -”命令返回到上一次所处的目录,使用“cd ..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,使用“cd ~username”命令切换到其他用户的家目录

[root@bogon ~]# cd /etc/

[root@bogon etc]# cd -

/root

[root@bogon ~]# cd ..

[root@bogon /]# cd ~

[root@bogon ~]#  

ls命令:用于显示目录中的文件信息,语法格式为“ls [参数] [文件名称]”使用ls命令的-a参数可以看到全部文件(包括隐藏文件),使用-l参数可以查看文件的属性、大小等详细信息,使用-d参数可以查看目录属性信息

[root@bogon ~]# ls -al

total 48

dr-xr-x---.  5 root root  280 Nov  8 11:06 .

dr-xr-xr-x. 17 root root  245 Nov  6 14:39 ..

-rw-------.  1 root root 2788 Nov  6 11:37 anaconda-ks.cfg

-rw-------.  1 root root    3 Nov  7 17:21 .bash_history

tree命令:用于以树状图的形式列出目录内容及结构

[root@bogon ~]# tree

.

├── anaconda-ks.cfg

└── original-ks.cfg

0 directories, 2 files

find命令:用于按照指定条件来查找文件所对应的位置,语法格式为“find [查找范围] 寻找条件”

find命令中参数及作用

参数 作用
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
-type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec …… {}\; 后面可跟用于进一步处理搜索结果的命令

获取该目录中所有以host开头的文件列表

[root@bogon ~]# find /etc -name "host*" -print

/etc/host.conf

/etc/hosts

/etc/nvme/hostnqn

/etc/nvme/hostid

/etc/avahi/hosts

/etc/hostname

搜索权限中包括SUID权限的所有文件

[root@bogon ~]# find / -perm -4000 -print

/usr/bin/fusermount

/usr/bin/chage

/usr/bin/gpasswd

/usr/bin/newgrp

/usr/bin/mount

找出所有归属于子用户的文件并复制到/root/findresults目录中

先查一下自己的子用户

[root@bogon ~]# cat /etc/passwd

centos8:x:1000:1000:centos_8:/home/centos8:/bin/bash

[root@bogon ~]# find / -user centos8 -exec cp -a {} /root/findresults/ \;

[root@bogon ~]# ll

total 20

-rw-------.   1 root    root    2788 Nov  6 11:37 anaconda-ks.cfg

drwx------. 116 centos8 centos8 8192 Nov  8 14:32 findresults

-rw-------.   1 root    root    2106 Nov  6 11:37 original-ks.cfg

locate命令:用于按照名称快速搜索文件所对应的位置,语法格式为“locate文件名称”使用locate命令时,先使用updatedb命令生成一个索引库文件,这个库文件的名字是/var/lib/mlocate/mlocate.db,后续在使用locate命令搜索文件时就是在该库中进行查找操作

[root@bogon ~]# updatedb

[root@bogon ~]# ll /var/lib/mlocate/mlocate.db  

-rw-r-----. 1 root slocate 3764716 Nov  8 14:48 /var/lib/mlocate/mlocate.db

[root@bogon ~]# locate whereis

/usr/bin/whereis

/usr/share/bash-completion/completions/whereis

/usr/share/man/man1/whereis.1.gz

whereis命令:用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式为“whereis命令名称”

[root@bogon ~]# whereis ls

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

which命令:用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为“which命令名称”主要为了找到命令本身所在的路径

[root@bogon ~]# which locate

/usr/bin/locate

[root@bogon ~]# which whereis

/usr/bin/whereis

2.6文本文件编辑命令

cat命令:用于查看内容较少纯文本文件,语法格式为“cat [参数] 文件名称”-n参数表示展示行数

[root@bogon ~]# cat -n anaconda-ks.cfg  

    1 #version=RHEL8

    2 # Reboot after installation

    3 reboot

    4 # Use graphical install

    5 graphical

more命令:用于查看内容较多纯文本文件,语法格式为“more [参数] 文件名称”more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容;还可以使用空格键或回车键向下翻页

[root@bogon ~]# more anaconda-ks.cfg  

    #version=RHEL8

    # Reboot after installation

    reboot

    # Use graphical install

    graphical

...

--More--(60%)

head命令:用于查看纯文本文件的前N行,语法格式为“head [参数] 文件名称”

查看文本中前3行的内容:

[root@bogon ~]# head -n 3 anaconda-ks.cfg  

#version=RHEL8

# Reboot after installation

reboot

tail命令:用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式为“tail [参数] 文件名称”

查看文本中后3行的内容(最新):

[root@bogon ~]# tail -n 3 anaconda-ks.cfg  

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

持续刷新一个文件的内容:

[root@bogon ~]# tail -f /var/log/messages

Nov  8 14:44:42 bogon systemd[1]: Started Network Manager Script Dispatcher Service.

Nov  8 14:44:42 bogon systemd[1]: systemd-tmpfiles-clean.service: Succeeded.

Nov  8 14:44:42 bogon systemd[1]: Started Cleanup of Temporary Directories.

tr命令:用于替换文本内容中的字符,语法格式为“tr [原始字符] [目标字符]”

把某个文本内容中的英文全部替换为大写:

[root@bogon ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]

wc命令用于统计指定文本文件的行数、字数或字节数,语法格式为“wc [参数] 文件名称”

wc命令中参数及作用

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数

统计当前系统中有多少个用户

[root@bogon ~]# wc -l /etc/passwd

47 /etc/passwd

stat命令:用于查看文件的具体存储细节和时间等信息,语法格式为“stat文件名称”Linux系统中的文件包含3种时间状态,分别是Access Time(内容最后一次被访问的时间,简称为Atime),Modify Time(内容最后一次被修改的时间,简称为Mtime)以及Change Time(文件属性最后一次被修改的时间,简称为Ctime)

使用state命令查看文件的这3种时间状态信息:

[root@bogon ~]# stat anaconda-ks.cfg

 File: anaconda-ks.cfg

 Size: 2788       Blocks: 8          IO Block: 4096   regular file

Device: 10303h/66307d Inode: 35912821    Links: 1

Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)

Context: system_u:object_r:admin_home_t:s0

Access: 2023-11-08 11:05:37.154849436 +0800

Modify: 2023-11-06 11:37:22.053500992 +0800

Change: 2023-11-06 11:37:22.053500992 +0800

Birth: 2023-11-06 11:37:21.963500146 +0800

grep命令:用于按行提取文本内容,语法格式为“grep [参数] 文件名称”

-n参数用来显示搜索到的信息的行号

-v参数用于反选信息(即没有包含关键词的所有信息行)

grep命令中参数及其作用

参数 作用
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择——仅列出没有“关键词”的行。

使用grep命令查找出当前系统中不允许登录系统的所有用户的信息:

[root@bogon ~]# grep /sbin/nologin /etc/passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

cut命令:用于按“列”提取文本内容,语法格式为“cut [参数] 文件名称”

提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:

[root@bogon ~]# cut -d : -f 1 /etc/passwd

root

bin

daemon

diff命令:用于比较多个文件之间内容的差异,语法格式为“diff [参数] 文件名称A 文件名称B”使用--brief参数来确认两个文件是否相同,使用-c参数来详细比较出多个文件的差异之处

做俩文件,复制一样的内容,稍微改一行

[root@bogon ~]# vim test1

[root@bogon ~]# vim test2

[root@bogon ~]# diff --brief test1 test2

Files test1 and test2 differ

[root@bogon ~]# diff -c test1 test2

*** test1 2023-11-08 15:24:51.300664734 +0800

--- test2 2023-11-08 15:25:20.331739086 +0800

***************

*** 2,8 ****

 bin

 daemon

 adm

! lp

 sync

 shutdown

 halt

--- 2,8 ----

 bin

 daemon

 adm

! LP

 sync

 shutdown

 halt

uniq命令:用于去除文本中连续的重复行,语法格式为“uniq [参数] 文件名称”

[root@bogon ~]# uniq test2

root

bin

daemon

sort命令:用于对文本内容进行再排序,语法格式为“sort [参数] 文件名称”

sort命令中参数及作用

参数 作用
-f 忽略大小写
-b 忽略缩进与空格
-n 以数值型排序
-r 反向排序
-u 去除重复行
-t 指定间隔符
-k 设置字段范围

默认会按照字母顺序进行排序:

[root@bogon ~]# sort test1

-u参数进行去重操作:

[root@bogon ~]# sort -u test1

-n参数进行数字排序操作:

[root@bogon ~]# sort -n test1

用-t参数指定间隔符:,用-k参数指定第3列,用-n参数进行数字排序/etc/passwd文件:

[root@bogon ~]# sort -t : -k 3 -n /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

2.7文件目录管理命令

touch命令:用于创建空白文件或设置文件的时间,语法格式为“touch [参数] 文件名称”

touch命令中参数及作用

参数 作用
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime

用touch命令把修改后的文件时间设置成修改之前的时间(隐藏文件修改事实):

[root@bogon ~]# touch -d "2023-11-09 15:44" anaconda-ks.cfg

[root@bogon ~]# ls -l anaconda-ks.cfg  

-rw-------. 1 root root 2788 Nov  9  2023 anaconda-ks.cfg

mkdir命令:用于创建空白的目录,语法格式为“mkdir [参数] 目录名称”

-p参数来递归创建出具有嵌套层叠关系的文件目录:

[root@bogon ~]# mkdir -p /a/b/c

[root@bogon ~]# tree /a

/a

└── b

   └── c

2 directories, 0 files

cp命令:用于复制文件或目录,语法格式为“cp [参数] 源文件名称 目标文件名称”目标文件是目录,则会把源文件复制到该目录中;目标文件也是普通文件,则会询问是否要覆盖它;目标文件不存在,则执行正常的复制操作

 cp命令中参数及作用

参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)

[root@bogon ~]# ll test1

-rw-r--r--. 1 root root 48 Nov  8 15:24 test1

[root@bogon ~]# cp -a test1 test2

cp: overwrite 'test2'?  

[root@bogon ~]# ll test2

-rw-r--r--. 1 root root 48 Nov  8 15:25 test2

mv命令:用于剪切或重命名文件,语法格式为“mv [参数] 源文件名称 目标文件名称”默认会把源文件删除,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实也就是对该文件进行了重命名操作:

[root@bogon ~]# mv test1 test3

[root@bogon ~]# ll test3

-rw-r--r--. 1 root root 48 Nov  8 15:24 test3

rm命令:用于删除文件或目录,语法格式为“rm [参数] 文件    名称”

rm命令中参数及作用

参数 作用
-f 强制执行
-i 删除前询问
-r 删除目录
-v 显示过程

rm命令后-f参数来强制删除。-r参数删除目录:

[root@bogon ~]# rm -rf test3

[root@bogon ~]# ll test3

ls: cannot access 'test3': No such file or directory

dd命令:用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if=参数值of=参数值count=参数值bs=参数值”

 dd命令中参数及作用

参数 作用
if 输入的文件名称
of 输出的文件名称
bs 设置每个“块”的大小
count 设置要复制“块”的个数

dd命令从/dev/zero设备文件中取出一个大小为560MB的数据块,然后保存成名为560的文件:

[root@bogon ~]# dd if=/dev/zero of=560 count=1 bs=560M

1+0 records in

1+0 records out

587202560 bytes (587 MB, 560 MiB) copied, 3.56762 s, 165 MB/s

[root@bogon ~]# ls -hl 560

-rw-r--r--. 1 root root 560M Nov  8 15:53 560

使用dd命令来压制出光盘镜像文件(首先确保虚拟机设置设备连接且使用iso映像文件):

image.png

时间太长我直接ctrl+c终止了,需要打包的可以试试应该是10.1G

[root@bogon ~]# dd if=/dev/cdrom of=RHEL-server-8.5.iso

3188193+0 records in

3188192+0 records out

1632354304 bytes (1.6 GB, 1.5 GiB) copied, 541.769 s, 3.0 MB/s

file命令:用于查看文件的类型,语法格式为“file文件名称”

使用file命令来查看文件类型:

[root@bogon ~]# file anaconda-ks.cfg  

anaconda-ks.cfg: ASCII text

tar命令:用于对文件进行打包压缩或解压,语法格式为“tar参数 文件名称”Linux系统中,主要使用的是.tar、.tar.gz或.tar.bz2格式

tar命令中参数及作用

参数 作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录

“tar -czvf压缩包名称.tar.gz要打包的目录”命令把指定的文件进行打包压缩;解压命令为“tar -xzvf压缩包名称.tar.gz”

[root@bogon ~]# tar -zcvf test.tar.gz test2  

test2

[root@bogon ~]# tar -zxvf test.tar.gz

test2

上一章把多用户图形改成了文本,有好多人不适应,所以我们也可以通过软链换回来,命令如下:

[root@bogon ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

二、巩固练习

1.在RHEL 8及众多的Linux系统中,最常使用的Shell终端是什么?

答:Bash解释器。

2.执行Linux系统命令时,添加参数的目的是什么?

答:为了让Linux系统命令能够更贴合用户的实际需求进行工作。

3.Linux系统命令、命令参数及命令对象之间,应该使用什么来间隔?

答:应该使用一个或多个空格进行间隔。

4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。

答:echo $SHELL。

5.简述Linux系统中5种进程的名称及含义。

答:在Linux系统中,有下面5种进程名称(还包括高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)多线程(l)5种补充形式)

R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

6.请尝试使用Linux系统命令关闭PID为5529的服务进程。

答:执行kill 5529命令;若知道服务的名称,则可以使用killall命令进行关闭。

7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?

答:这4项重要的信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。

8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间段?

答:通过负载数值可以看出,最近1分钟内的负载压力是最大的。

9.使用history命令查看历史命令的执行记录时,命令前面的编码数字除了排序外还有什么用处?

答:还可以用“!编码数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?

答:文件内容较长,使用more命令;内容较少使用cat命令。

11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?

答:加上-p递归迭代参数,自动化地创建有嵌套关系的目录。

12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?

答:可使用-f参数,这样即可无须二次确认。

13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?

答:应该用tar命令进行解压,执行tar -zxvf backup.tar.gz命令

14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数?

答:可使用-v参数来进行匹配内容的反向选择,即显示出不包含某个关键词的行

三、跋文

如果想上手操作的同学们可以通过阿里云ecs服务器免费试用参与或低价购买专属于自己的服务器入口如下

入口一:新老同学免费试用

入口二:新人服务器特惠礼包

入口三:大学生版低价特惠服务器

入口四:云服务器首购特惠&免费试用

入口五:云服务器特惠1.5折起

入口六:低价特惠建站

目录
相关文章
|
5天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
69 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
21 3
|
1天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
3天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。Linux系统
|
2天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
2天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
13 2
|
4天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
4天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
12 3
|
4天前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###