Linux学习-第三章

系统命令

1.系统当前时间

date命令:

[root@iZ2ze4z8h14hq1x56p3n9xZ test]# date
Fri May  3 18:54:05 CST 2024
[root@iZ2ze4z8h14hq1x56p3n9xZ test]# 

2.切换用户

2.1 su命令

[root@iZ2ze4z8h14hq1x56p3n9xZ test]# su zyx
[zyx@iZ2ze4z8h14hq1x56p3n9xZ test]$ 

这样就从root用户转向了zyx这个用户。(root切换到其他用户的时候是不需要密码认证的,但是从其他用户切换到高权限的用户,比如说root用户,这时候是需要密码认证的)
但是这时候由于权限问题,zyx这个用户不能创建文件,当zyx用户进入到自己的家目录的时候才可以创建文件。

2.2 sudo命令

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

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# su zyx
[zyx@iZ2ze4z8h14hq1x56p3n9xZ ~]$ ls
mysql
[zyx@iZ2ze4z8h14hq1x56p3n9xZ ~]$ sudo touch a.txt

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for zyx: 
zyx is not in the sudoers file.  This incident will be reported.

这里只是演示,但是zyx这个用户没有在sudo组里,所以这里其实还是不能使用超级管理员的权限的。

3.echo命令

3.1 输出字符串

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo hello world
hello world
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo my name is zyx
my name is zyx

3.2 输出变量

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# name="zyx"    //定义变量
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo my name is $name   //通过$使用变量
my name is zyx

3.3 输出多行

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo "line1
> line2
> line3"
line1
line2
line3

3.4 输出特殊字符

echo还可以输出特殊字符,比如说“\n”,表示换行,还有“\t”,表示制表符,都是可以使用的,但是需要注意打印这些特殊字符,必须使用-e参数才行。

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo -e "line1 \n line2 \t line2-1"
line1 
 line2 	 line2-1

4. sort命令

sort命令可以对文件中的内容以“ 行 ”为单位进行升序和降序排列。
我们使用vim创建一个a.txt文件,然后随便添加一点内容,之后使用sort命令:

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort a.txt
abc
abe
abji
fawdr
fsa
gafg
gdfsg

这个排序是按照字符串的顺序进行的,如果想要降序的话,只需要加个-r参数就行了:

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort -r a.txt 
gdfsg
gafg
fsa
fawdr
abji
abe
abc

如果文件内容都是数字的话,sort命令也会自动将其按照字符串来进行排序,如果想让其按照数字及逆行排序,可以加一个-n参数(n表示number):

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort -n b.txt 
100
200
300
400
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort -nr b.txt 
400
300
200
100

5. diff命令

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

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# cat a.txt 
100
200
400
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# cat b.txt 
100
200
300
400
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# diff a.txt b.txt
2a3
> 300

输出结果中的c表示change,结果表示第一个文件的第2行与第二个文件的第3行是不一样的。

6.重定向

6.1 输出重定向

  • “ > ”:以覆盖的形式写到文件中。
  • “ >> ”:以追加的形式写道文件中。
  • 凡是在控制台上能够打印出来的,同意都可以重定向,可以将其打印到控制台的行为重定向到文件或其他设备。
  • 例如:我们通过重定向将ls -al的结果重定向到c.txt文件中:
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# ls -al > c.txt
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# ls
a.txt  b.txt  c.txt  mysql
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# cat c.txt 
total 40
drwx------  4 zyx  zyx    188 May  3 19:35 .
drwxr-xr-x. 4 root root    29 May  3 13:50 ..
-rw-r--r--  1 root root    12 May  3 19:27 a.txt
-rw-------  1 zyx  zyx    176 Dec 13 18:29 .bash_history
-rw-r--r--  1 zyx  zyx     18 May 27  2021 .bash_logout
-rw-r--r--  1 zyx  zyx    141 May 27  2021 .bash_profile
-rw-r--r--  1 zyx  zyx    376 May 27  2021 .bashrc
-rw-r--r--  1 root root    16 May  3 19:21 b.txt
-rw-r--r--  1 root root     0 May  3 19:35 c.txt
drwxrwxr-x  6 zyx  zyx     70 May  3 19:06 .esmtp_queue
drwxr-xr-x  5 root root    41 Jan 12 14:55 mysql
-rw-------  1 zyx  zyx  12288 Dec 13 18:27 .test.swp
-rw-------  1 zyx  zyx    870 Dec 13 18:29 .viminfo

甚至echo也是可以进行重定向的:

[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# echo my name is zyx > d.txt
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# ls
a.txt  b.txt  c.txt  d.txt  mysql
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# cat d.txt 
my name is zyx
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# 

6.2 输入重定向

  • “ < ” :将文件内容输入给某个命令,这是一种默认的行为,通常<是可以省略的,例如:
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# cat a.txt 
100
200
400
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort -n < a.txt 
100
200
400
  • “ << ”:如果是两个<的话是可以从用户的输入中读取命令进行输入重定向,例如:
[root@iZ2ze4z8h14hq1x56p3n9xZ zyx]# sort -n << jieshu
> 100
> 200
> 300
> 400
> jieshu
100
200
300
400

当最后输入的是指定的“jieshu”的时候就会结束输入,进行输入重定向然后执行指令。

7.grep命令

在某段内容中搜索
例如:grep 0 a.txt(在a.txt中搜索0)
grep是一个强大的命令行文本搜索工具,用于在文件中查找匹配的字符串或模式,并将匹配行作为输出,以下是grep命令的用法详解:

1.基本用法:

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

2.搜索多个文件

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

3.递归搜索目录

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

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

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

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

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

6.忽略大小写:

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

7.找出不匹配的行

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

8.使用正则表达式匹配:

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

8.管道 |

将前面命令的输出作为后面命令的输入,可以叠加,例如:
将ls -al的结果的输出当作后面grep命令的输入,并且后面可以继续叠加一个grep命令:

[root@iZ2ze4z8h14hq1x56p3n9xZ /]# ls -al | grep rwx | grep r-x
drwxr-xr-x    4 root root   42 Feb 28 16:11 data
drwxr-xr-x   20 root root 2960 Feb 29 18:41 dev
drwxr-xr-x. 110 root root 8192 Jan  8 11:23 etc
drwxr-xr-x.   4 root root   29 May  3 13:50 home
drwxr-xr-x.   2 root root    6 Nov  3  2020 media
drwxr-xr-x.   2 root root    6 Nov  3  2020 mnt
drwxr-xr-x.   3 root root   24 Jan  8 11:23 opt
drwxr-xr-x   33 root root 1020 Feb 28 22:41 run
drwxr-xr-x.   2 root root    6 Nov  3  2020 srv
drwxr-xr-x.  12 root root  144 Jun 11  2021 usr
drwxr-xr-x.  22 root root 4096 Jul 27  2021 var

9.查看系统进程

语法:

ps [命令参数]

常用参数:

  • -e:显示当前所有进程
  • -f:显示UID,PID,PPID,C与STIME等栏位信息
    • UID:UserID,表示这个进程是由哪个用户发起的;
    • ProcessID:进程ID,这个比较重要,当我们要杀死这个进程的时候可能就需要使用这个进程号;
    • PPID:Parent ProcessID,父进程ID;
    • C:CPU,占用的CPU的百分比;
    • STIME:Start Time,进程的启动时间;
    • TTY:表示这个进程是哪个终端启动的;
    • TIME:表示这个进程运行多久了;
    • CMD:表示这个进程对应的命令,这个进程是由哪个命令开启的。
UID          PID    PPID  C STIME TTY          TIME CMD

例如:

[root@iZ2ze4z8h14hq1x56p3n9xZ /]# ps -ef | grep docker
root       13112       1  0 Feb28 ?        00:09:08 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       13473   13112  0 Feb28 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306 -container-ip 172.18.0.2 -container-port 3306
root       13479   13112  0 Feb28 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 172.18.0.2 -container-port 3306
root       13504   13112  0 Feb28 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.18.0.3 -container-port 6379
root       13511   13112  0 Feb28 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 6379 -container-ip 172.18.0.3 -container-port 6379
root      940641  889582  0 14:20 pts/0    00:00:00 grep --color=auto docker

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

# 暂停10天,且让其后台运行
sleep 10d &

11. kill进程

kill 进程号
kill -9 进程号(强行杀死)
killall 进程名  (和进程名有关系的都杀死)

12. top命令

top命令是用于查看正在运行的系统进程信息的命令。他会实时动态地显示系统资源的使用情况,如CPU占用率,内存使用情况,进程情况等。通常用于系统监控和性能调优。
例如:
在这里插入图片描述
根据这个命令可以查看我们系统中进程使用资源的情况,比如CPU、MEM(内存)和SWAP(交换区),另外还可以查看系统中的僵尸进程(zombie)数量。

  • 僵尸进程:在操作系统中,僵尸进程是指一个已经执行结束的进程,但其进程描述符让然留在进程列表中,它不在执行任何其他操作,但仍占用一定内存空间。
  • 交换分区(SWAP):也称虚拟存储器,是一种在计算机内存不足时,为了增加内存所采用的一种技术。当系统内存不足时,操作系统会把暂时不需要的内存数据和程序信息通过交换机制存储到硬盘上的交换分区中,以节省内存的使用,从而保证共享内存的进程正常运行。
    top命令是会实时动态反应资源使用情况,按q退出。
    一般来说top命令已经够用了,下面的free命令和uptime命令所展示的内容top命令里都会有。

13.free命令

free命令可以用于查看物理内存和交换分区的使用情况。
在这里插入图片描述

14.uptime命令

uptime命令显示系统运行时间
在这里插入图片描述
前面的top、free和uptime命令看的是CPU、内存的使用情况,后面的df和du命令是磁盘使用情况

15.df命令

df命令是Linux系统中的一个磁盘空间使用情况查询命令,用于显示当前文件系统的磁盘空间使用状况,以及文件系统的挂载点、磁盘大小、已用空间、可用空间、使用占比等信息。df命令是disk free的缩写。
在这里插入图片描述
对于我们程序员来说,应该关注上图中红色的部分,如果已用空间超过80%就需要重点注意,防止磁盘已满导致数据无法写入而丢失。

16.du命令

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

[root@iZ2ze4z8h14hq1x56p3n9xZ /]# du | grep 61244
du: cannot access './proc/1177715/task/1177715/fd/4': No such file or directory
du: cannot access './proc/1177715/task/1177715/fdinfo/4': No such file or directory
du: cannot access './proc/1177715/fd/3': No such file or directory
du: cannot access './proc/1177715/fdinfo/3': No such file or directory
61244	./var/lib/docker/overlay2/6fd13004f15d37cf6b35dfa2d0d77b699ccf18ba898a04004d98805aefce5801/diff

在这里插入图片描述

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:

ifconfig

20.ping命令

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

  • ping ip地址
  • ping 域名
[root@iZ2ze4z8h14hq1x56p3n9xZ /]# ping www.baidu.com
PING www.a.shifen.com (220.181.38.149) 56(84) bytes of data.
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=1 ttl=54 time=3.82 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=2 ttl=54 time=3.85 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=3 ttl=54 time=3.82 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=4 ttl=54 time=3.82 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=5 ttl=54 time=3.81 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=6 ttl=54 time=3.86 ms
64 bytes from 220.181.38.149 (220.181.38.149): icmp_seq=7 ttl=54 time=3.81 ms

21.curl命令

模拟用户访问,模拟浏览器行为(所以可以用来测试我们编写的web服务接口)

  • 例如:curl http://www.baidu.com(可以查看百度首页的前端代码)
[root@iZ2ze4z8h14hq1x56p3n9xZ /]# curl https://www.baidu.com
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');
                </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

上面就是访问百度的响应体。

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

curl [options] <URL>

其中,URL表示要请求的目标地址
curl命令的常用选项如下:

  • -i:显示响应头信息;
  • -I(大写i):只显示响应头信息,不显示响应体;
  • -X:设置请求方法,包括GET、POST、PUT、DELETE;
  • -d:设置请求体数据(POST请求);
  • -H:设置请求头信息;
  • -o/-O:下载文件,并保存到本地;
  • -u:设置认证信息;
  • -A:设置User-Agent;
  • -s:静默模式,不输出进度信息。

22.wget

wget这个命令用于下载资源,语法:

wget 资源地址

比如我们下载tomcat服务器:

[root@iZ2ze4z8h14hq1x56p3n9xZ /]# wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.23/bin/apache-tomcat-10.1.23.tar.gz
--2024-05-04 16:01:34--  https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.23/bin/apache-tomcat-10.1.23.tar.gz
Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644
Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12992318 (12M) [application/x-gzip]
Saving to: ‘apache-tomcat-10.1.23.tar.gz’

apache-tomcat-10.1.23.tar.gz                   100%[===================================================================================================>]  12.39M  25.7MB/s    in 0.5s    

2024-05-04 16:01:35 (25.7 MB/s) - ‘apache-tomcat-10.1.23.tar.gz’ saved [12992318/12992318]

[root@iZ2ze4z8h14hq1x56p3n9xZ /]# ls
apache-tomcat-10.1.23.tar.gz  bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

结果:
在这里插入图片描述

23.netstat查看服务及监听端口

在实际开发中,netstat最常用的操作是查看网络连接情况。通过使用netstat命令,开发人员可以快速了解当前系统上的所有网络连接,包括正在监听的接口、简历的连接、连接状态等信息。这对于排查网络问题和监控系统非常有用。另外,netstat还可以用于检查网络安全,例如查看哪些端口正在被占用,是否有不安全的连接等。
以下是netstat命令的常用参数和用法:

  • 1.查看所有的网络连接状态
netstat -a
netstat -an # 添加-n参数的目的是:不将端口和IP地址转换为名称,而是直接显示数字格式的IP地址和端口号

LISTENING状态:表示该端口已占用,正在监听,等待客户端的连接。
CONNECTED状态:表示网络已建立,但并没有开始数据传输。
ESTABLISHED状态:表示网络已连接,数据正在传输中。
TIME_WAIT状态:表示连接已经被终止,在双方都完成数据传输后,该连接会进入TIME_WAIT状态,并等待一段时间后关闭。

  • 2.查看所有处于监听状态的连接:
netstat -1
  • 3 查看所有TCP连接状态:
netstat -t
  • 4 查看素有UDP连接状态:
netstat -u
  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值