第三章:系统命令

发布于:2025-05-16 ⋅ 阅读:(12) ⋅ 点赞:(0)

1.系统当前时间

date命令:

2.切换用户 

su 用户名

sudo 命令:表示使用超级管理员身份执行该命令,如果你当前不是管理员,希望以管理员身份执行某个命令时,使用sudo,需要输入超级管理员的密码:

3. echo命令

⑴.输出字符串

echo "Hello, world!"

这将会输出 `Hello, world!` 和一个换行符。

⑵.输出变量

name="John"
echo "My name is $name"

这将会输出 `My name is John` 和一个换行符。在输出字符串时,使用 `$` 符号加上变量名即可。

⑶.输出多行

打印多行

⑷.输出特殊字符

echo -e "Line 1\nLine 2\tTable"

这将会输出两行文本,第一行后接一个换行符,第二行中的 `Table`前有一个制表符。

4.sort命令

sort命令可以对文件中的内容以“行”为单位进行升序和降序排列:
先准备一个a.txt 文件

a.txt 文件内容如下:

升序:

降序:

将文件中的内容当做数字进行排序,要使用-n 

a.txt文件内容:

当做数字进行排序:

5. diff命令

diff命令可以用来比较两个文件的不同之处:

文件内容如下:


以上的比较结果中:1c1是什么含义?3c3,4是什么含义?
c 表示 change,改变的意思。
1c1表示:第一个文件的第1行 和 第二个文件的第1行 发生了改变。
3c3,4表示:第一个文件的第3行 和 第二个文件的第3,4行不同,发生了改变。

6.重定向

⑴.输出重定向


在 Linux 中,输出重定向符 > 和 >> 用于将命令的输出结果写入文件,但两者的行为有本质区别:

核心区别:覆盖 vs 追加

符号 名称 作用描述
> 覆盖重定向 如果文件存在,会清空原有内容并写入新数据
如果文件不存在,会创建新文件。
>> 追加重定向 如果文件存在,新数据会追加到文件末尾,不会覆盖原有内容;
如果文件不存在,会创建新文件。

⑵.输入重定向

<:将文件内容输入给某个命令,这是一种默认的行为,通常 < 是可以省略的。例如: a.txt文件内容如下:

将 a.txt 文件中的内容输入给 sort命令:

输入重定向符 < 和 << 用于将数据传递给命令,但两者的行为有本质区别:

核心区别:文件输入 vs 多行文本

符号 名称 作用描述
< 输入重定向 将文件内容作为命令的输入。例如:command < input.txt
<< 此处文档(Here Document) 在命令行中直接提供多行文本作为输入,直到遇到终止标记(EOF)。例如:
command << EOF
text line 1
text line 2
EOF

7.grep命令 

在某段内容中搜索
例如: grep 0 a.txt (在a.txt中搜索0)

`grep` 是一个强大的命令行文本搜索工具,用于在文件中查找匹配的字符串或模式,并将匹配行作为输出。以下是 `grep` 命令的用法详解:

基本用法:

grep 'pattern' file
  • 'pattern' 表示要匹配的字符串或模式。

  • file 表示要搜索的文件名。如果不指定文件名,则 grep 命令会从标准输入中读取数据,等待用户输入并匹配字符串。


搜索多个文件:

grep 'pattern' file1 file2
grep 'pattern' *.txt
  • `file1` 和 `file2` 表示要搜索的多个文件名。也可以使用通配符 `*.txt` 搜索所有扩展名为 `.txt` 的文件。

递归搜索目录:

grep -r 'pattern' dir
  • -r 表示递归搜索目录。

  • dir 表示要搜索的目录。

显示匹配行前的几行或后的几行:

grep -A 2 'pattern' file    # 显示匹配行后2行
grep -B 2 'pattern' file    # 显示匹配行前2行
grep -C 2 'pattern' file    # 显示匹配行前后各2行
  • `-A` 表示显示匹配行后的几行。
  • `-B` 表示显示匹配行前的几行。
  • `-C` 表示同时显示匹配行前后的几行。这三个选项后面必须跟一个数字,表示要显示的行数。

同时输出匹配结果的行号:

grep -n 'pattern' file
  •  `-n` 表示只输出匹配结果所在的行号。

忽略大小写:

grep -i 'pattern' file
  • -i 表示忽略大小写。

找出不匹配的行:

grep -v 'pattern' file
  • -v 输出不匹配模式的行。

使用正则表达式匹配:

grep -E 'pattern' file
  • -E 表示使用正则表达式匹配。

8.管道 | 

将前面命令的输出作为后面命令的输入,可以叠加,例如: 

9.查看系统进程 

ps [命令参数]

常用参数:
    -e :显示当前所有进程
    -f :显示 UID,PPID,C 与 STIME 栏位信息

UID:该进程的所属用户

PID:进程id

PPID:父进程id

C:CPU使用百分比

STIME:启动时间

TTY:启动该进程的终端设备是哪个

TIME:耗费的CPU时间

CMD:该进程对应的命令

10.sleep命令

在 Linux 中,`sleep` 是一个常用的命令,用于暂停程序的执行一段时间。`sleep` 命令的基本语法如下:

sleep NUMBER[SUFFIX]

其中,`NUMBER` 为需要暂停的时间,单位是秒;`SUFFIX` 则可以是以下之一:

- `s` :秒(默认);
- `m` :分;
- `h` :小时;
- `d` :日。

例如:

# 暂停 3 秒
sleep 3

# 暂停 1 分钟
sleep 1m

# 暂停 2 小时
sleep 2h

# 暂停 1 天
sleep 1d

启动sleep进程,暂停1天:

11.kill进程

kill 进程号
kill -9 进程号(强行杀死)
killall 进程名

找到进程:




& 符号用于将命令放到后台执行,使其不占用当前终端会话。具体到 sleep 10d & 这个命令:

& 的作用

当你执行 sleep 10d & 时:

  1. 命令会在后台运行
    sleep 10d 表示休眠 10 天(240 小时),但加上 & 后,该命令会在后台默默运行,不会阻塞当前终端。

  2. 终端控制权立即返回
    你可以继续在当前终端执行其他命令,无需等待 sleep 结束。

12.top命令

top 命令是用于查看正在运行的系统进程信息的命令。它会实时动态地显示系统资源的使用情况,如 CPU 占用率、内存使用情况、进程情况等。通常用于系统监控和性能调优。

僵尸进程:在操作系统中,僵尸进程 (Zombie Process) 是指一个已经执行结束的进程,但其进程描述符仍然留在进程列表中,它不再执行任何其他操作,但仍然占用一定内存空间。

交换分区(Swap),也称虚拟存储器,是一种在计算机内存不足时,为了增加内存所采用的一种技术。当系统内存不足时,操作系统会把暂时不需要的内存数据和程序信息通过交换机制存储到硬盘上的交换分区中,以节省内存的使用,从而保证共享内存的进程正常运行。

类比场景:衣柜不够用怎么办?

假设你家有个衣柜(物理内存),里面挂满了当季常穿的衣服。但如果有一天,你买了很多新衣服,衣柜塞不下了(内存不足),怎么办?
这时候,你可能会把一些暂时不穿的衣服(暂时不用的数据 / 程序)打包放到储藏室(硬盘上的交换分区 Swap),等需要穿的时候再拿出来换上(从 Swap 调回内存)。

Swap 的核心作用就是:当内存不够时,临时把「暂时用不到的东西」存到硬盘里,腾出内存空间给更急需的程序用。

具体怎么工作的?

  1. 什么时候触发 Swap?
    当电脑运行的程序太多,内存快被占满时,系统会自动「挑出」暂时不用的程序数据,转移到 Swap 分区存放。
    比如:你同时开了浏览器、文档编辑、视频剪辑三个软件,内存快满了,系统会先把视频剪辑软件中暂时没编辑的视频片段「搬」到 Swap 里,让当前正在编辑的文档和网页保持流畅。

  2. 数据怎么「搬来搬去」?

    • 当程序需要用到 Swap 里的数据时,系统会再把数据从硬盘调回内存(就像从储藏室拿衣服回衣柜)。
    • 这个过程完全自动,用户感觉不到,但硬盘速度比内存慢很多,所以如果频繁「搬来搬去」,电脑会明显变卡(就像频繁跑储藏室拿衣服,做事效率会降低)。

q:退出top命令。

13.free命令

free命令可以用于查看物理内存和交换分区的使用情况。下面是一条可能的 free 命令的输出结果的示例:

14.uptime命令

显示系统运行时间:

15.df命令

`df` 命令是 Linux 系统中的一个磁盘空间使用情况查询命令,用于显示当前文件系统的磁盘空间使用状况,以及文件系统的挂载点、磁盘大小、已用空间、可用空间、使用占比等信息。`df`命令是 "disk free" 的缩写。

对于程序员来说,应该重点关注以上红框中的内容,已用空间超过80%则需要重点注意,以防磁盘已满导致数据无法写入而丢失。

16.du命令

`du`命令是 Linux 系统中的一个磁盘空间占用查询命令,用于显示文件或目录占用的磁盘空间大小。`du`命令是 "disk usage" 的缩写:

4表示占用4个字节的空间。

17.重启

reboot

18.关机

shutdown -h now poweroff

shutdown -h nowpoweroff 都是用于关机的 Linux 命令,它们的区别如下:

  1. shutdown -h now 命令会向系统发送信号,通知所有正在运行的进程停止运行,并保存当前的状态,然后关闭系统。通常会在关机前向所有用户发送通知消息。

  2. poweroff 命令相较于 shutdown -h now 更为强制,它会立即关闭系统电源,不会等待正在运行的进程结束。使用 poweroff 命令时需要特别小心,因为它可能会丢失尚未保存的数据。

综上所述,shutdown -h now 命令会逐步关闭进程,允许程序释放资源并保存数据;而 poweroff 命令则会立即关闭系统电源,可能会丢失一些尚未保存的数据。因此,在正常关机的情况下,建议使用 shutdown -h now 命令;只有在意外情况下,比如系统出现严重故障等情况,才应该使用 poweroff 命令。

19.ifconfig命令

查看网卡的ip地址。在windows当中是:ipconfig。在linux当中是ifconfig。

20.ping命令

查看计算机之间是否可以正常通信
语法: 

- ping ip地址
- ping 域名

21. curl命令

它可以用来测试我们编写的web服务接口,例如:http://localhost:8080/oa/user/list,这是一个查看用户列表的一个接口,测试结果是:一个含有用户列表信息的JSON字符串

模拟用户访问,模拟浏览器行为。

- 例如:curl    http://www.baidu.com (可以直接查看百度首页的前端代码。)

`curl` 命令是 Linux 系统中的一个用于发送 HTTP 请求的工具。它支持各种协议,包括 HTTP、HTTPS、FTP、IMAP、SMTP 等,可以用于从网络中获取数据、上传文件等。

`curl` 命令的基本语法如下:

curl [options] <URL>

其中,URL 表示要请求的目标地址。

curl 命令的常用选项如下:

  • -i :显示响应头信息。

  • -I :只显示响应头信息,不显示响应体。

  • -X :设置请求方法,包括 GET、POST、PUT、DELETE 等。

  • -d :设置请求体数据(POST 请求)。

  • -H :设置请求头信息。

  • -o/-O :下载文件,并保存到本地。

  • -u :设置认证信息。

  • -A :设置 User-Agent。

  • -s :静默模式,不输出进度信息。

以下是 `curl` 命令的一些使用示例:

请求一个 URL 并输出响应信息:

curl www.example.com

发送 POST 请求:

curl -X POST -d "name=john&age=30" www.example.com/submit

下载一个文件:

curl -O www.example.com/test.zip

设置请求头信息:

curl -H "User-Agent: Mozilla/5.0" www.example.com

总之,`curl` 命令是一个非常方便的工具,可以用于从网络中获取数据、上传文件等,并且支持多种协议和请求方式。需要注意的是,在实际使用 `curl` 命令时,还需要根据具体情况设置相应的选项和参数。

22.wget

下载资源,语法:wget 资源地址
下载tomcat :

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz

23.netstat查看网络连接状态及端口

在实际开发中,netstat最常用的操作是查看网络连接情况。通过使用netstat命令,开发人员可以快速了解当前系统上的所有网络连接,包括正在监听的端口、建立的连接、连接状态等信息。这对于排查网络问题和监控系统状态非常有用。

另外,netstat还可以用于检查网络安全,例如查看哪些端口正在被占用,是否有不安全的连接等。

以下是netstat命令的常用参数和用法:

1.查看所有的网络连接状态:

netstat -a
netstat -an 添加-n参数的目的是:不将端口和IP地址转换为名称,而是直接显示数字格式的IP地址和端口号

LISTENING 状态表示该端口已占用,正在监听,等待客户端的连接。

CONNECTED状态表示网络连接已建立,但并没有开始数据传输。

ESTABLISHED 状态表示网络已连接,数据正在传输中。

TIME_WAIT 状态表示连接已经被终止,在双方都完成数据传输后,该连接会进入TIME_WAIT状态,并等待一段时间后关闭。

2.查看所有处于监听状态的连接:

netstat -l

3.查看所有TCP连接状态:

netstat -t

4.查看所有UDP连接状态:

netstat -u

5.查看所有处于CONNECTED状态的连接:

netstat -o

6.查看指定端口的网络连接状态:

netstat -an | grep 端口号

例如,查看80端口的网络连接状态:

netstat -an | grep :80


网站公告

今日签到

点亮在社区的每一天
去签到