Liunx命令大全及基础知识扫盲


1,到达最后一行 ctrl + end

1, ifconfig命令

ifconfig 是一个用于配置和显示网络接口信息的命令行工具
1,ifconfig这将显示所有网络接口的详细信息,包括接口名称、MAC 地址、IP 地址、子网掩码、广播地址等
在这里插入图片描述

ens33:表示网络接口的名称。

flags=4163<UP,BROADCAST,RUNNING,MULTICAST>:表示接口的当前状态。其中 UP 表示接口已启用,BROADCAST 表示接口支持广播通信,RUNNING 表示接口正在运行,MULTICAST 表示接口支持组播通信。

mtu 1500:表示接口的最大传输单元(Maximum Transmission Unit)。MTU 是数据链路层一次能够传输的最大数据包长度。

inet 192.168.20.2:表示接口的 IPv4 地址。在该示例中,接口的 IP 地址为 192.168.20.2。

netmask 255.255.255.0:表示接口的子网掩码。子网掩码用于将 IP 地址划分为网络部分和主机部分。

broadcast 192.168.20.255:表示接口的广播地址。广播地址用于将数据包发送到同一网络中的所有主机。

inet6 fe80::2736:eb03:717c:3e29:表示接口的 IPv6 地址。IPv6 是下一代互联网协议,用于分配全球唯一的地址。

prefixlen 64:表示接口的 IPv6 地址前缀长度。IPv6 地址由前缀和接口标识符组成,前缀长度指示前缀的位数。

scopeid 0x20<link>:表示接口的作用域标识符。作用域标识符指示地址的可用范围。

ether 00:0c:29:4d:c3:39:表示接口的 MAC 地址。MAC 地址是网络接口的唯一标识
2,ifconfig <interface_name>
将 <interface_name> 替换为你要查看的网络接口名称,例如 eth0。这将显示指定网络接口的详细信息。

2, ens10和eth10

ens0 和 eth0 是两个不同的网络接口命名约定,常见于不同的操作系统或网络设备。

ens0 是一种新的网络接口命名约定,通常在现代Linux系统中使用。它基于 systemd 网络接口命名规则,以 ens 开头,后面跟着一个数字,表示第几个以太网接口。例如,ens0 表示第一个以太网接口。

eth0 是传统的网络接口命名约定,在旧版本的Linux系统中广泛使用。它以 eth 开头,后面跟着一个数字,表示第几个以太网接口。例如,eth0 表示第一个以太网接口。

总的来说,ens0 和 eth0 的区别在于命名约定的不同,它们都是用来标识不同的以太网接口。在网络配置和管理中,它们的功能和用法一般是相似的,只是命名上的差异。

3,查看PCI地址

PCI地址是指Peripheral Component Interconnect(PCI)总线上的设备的物理地址。PCI总线是一种用于连接计算机主板和外部设备的标准接口。PCI地址由总线号、设备号、功能号和寄存器号组成。总线号用于标识设备所连接的PCI总线的编号,设备号用于标识同一总线上的不同设备,功能号用于标识同一设备上的不同功能,寄存器号用于标识设备上的寄存器。通过组合这些编号,计算机系统可以识别和访问特定的PCI设备和其对应的寄存器。PCI地址在操作系统和设备驱动程序中使用,用于配置、管理和与PCI设备进行通信。总之,PCI地址是一种用于标识PCI总线上设备的物理地址,由总线号、设备号、功能号和寄存器号组成。它为操作系统和驱动程序提供了一种标准化的方式来访问和控制PCI设备。PCI地址用于唯一标识连接到PCI总线的设备,并确定设备的位置和访问设备的寄存器。

1,查看所有网口的PCI地址

// install 
 yum install pciutils
//check
lspci | grep Eth

在这里插入图片描述
2,查看指定网口地址

ethtool -i eth37/ens37

在这里插入图片描述

4,find命令

find -name 文件名

find / -name 文件名*

find / -name 文件名

结果会显示该文件的绝对路径

5,<stdio.h>在liunx系统里存储于/usr/include

6,.so文件(动态库)在liunx系统的/usr/lib里面

7,ll libuuid.so*列出所有以libuuid.so开头的文件注意find是查找其路径ll是列出

在这里插入图片描述

8,Liunx下的Socket通信与Unix下的通信

未完

static int ims_cmd_cli_socket_connect(int fd)
{
    int32_t ret;
    struct sockaddr_un srv_addr;

    if (fd < 0) {
        return RET_ERR;
    }

    //connect server
    srv_addr.sun_family = AF_UNIX;
    strcpy(srv_addr.sun_path, UNIX_DOMAIN);
    ret = connect(fd, (struct sockaddr*)&srv_addr, sizeof(srv_addr));
    if (ret == -1) {
        //连接已存在返回ok
        if (EISCONN == errno) {
            return RET_OK;
        }

        printf("cannot connect to the server, errno:%u, errmsg:%s\n", errno, strerror(errno));
        return RET_ERR;
    }
    
    return RET_OK;
}

struct sockaddr_instruct sockaddr_un是两种不同的地址结构体,用于在不同的网络环境下进行Socket通信。

struct sockaddr_in是用于IPv4网络环境下的地址结构体。它定义在<netinet/in.h>头文件中,包含以下字段:

  • sa_family_t sin_family:地址族,通常设置为AF_INET表示IPv4。
  • in_port_t sin_port:16位的端口号,使用网络字节序(Big-endian)表示。
  • struct in_addr sin_addr:IPv4地址结构体,包含一个32位的IP地址。
  • char sin_zero[8]:填充字段,用于保持结构体大小与struct sockaddr一致。

struct in_addr是IPv4地址结构体,定义在<netinet/in.h>头文件中,包含一个32位的IP地址字段。

struct sockaddr_un是用于Unix域(Unix domain)环境下的地址结构体。它定义在<sys/un.h>头文件中,包含以下字段:

  • sa_family_t sun_family:地址族,通常设置为AF_UNIX表示Unix域。
  • char sun_path[UNIX_PATH_MAX]:Unix域路径,用于表示Socket文件在文件系统中的路径。

在使用Socket编程时,根据不同的网络环境选择合适的地址结构体。如果是在IPv4网络环境下进行通信,可以使用struct sockaddr_in和相关的函数(如inet_pton()inet_ntop())来处理IP地址和端口号。如果是在Unix域环境下进行通信,可以使用struct sockaddr_un和相关的函数来处理Unix域路径。

w_len = write(g_connect_fd, cmd_req, cmd_req->length);

这段代码用于向已经建立连接的Socket写入数据。

write()函数用于将数据写入一个文件描述符。它接受三个参数:g_connect_fd表示要写入的文件描述符,cmd_req是要写入的数据的指针,cmd_req->length表示要写入的数据的长度。

在这段代码中,write(g_connect_fd, cmd_req, cmd_req->length)表示将cmd_req指针指向的数据写入g_connect_fd文件描述符。cmd_req->length表示要写入的数据的长度,即写入的字节数。

需要注意的是,write()函数的返回值是成功写入的字节数,如果返回的值小于cmd_req->length,则表示写入操作可能未完全完成,可能需要继续写入剩余的数据。

在使用write()函数进行写入操作时,也需要检查返回值来确定写入是否成功。如果返回值大于0,则表示成功写入相应的字节数;如果返回值等于0,则表示写入操作完成,但没有写入任何数据;如果返回值为-1,则表示写入操作出现错误,可以通过查看errno来获取具体的错误信息。
这段代码用于设置信号处理函数。

9,信号

首先,通过signal(SIGHUP, cmd_signal_handle)将SIGHUP信号的处理函数设置为cmd_signal_handle。SIGHUP信号通常用于指示终端连接断开或终端窗口关闭。在收到SIGHUP信号时,会调用cmd_signal_handle函数来处理该信号。

接下来,通过signal(SIGINT, cmd_signal_handle)将SIGINT信号的处理函数设置为cmd_signal_handle。SIGINT信号通常由终端上的Ctrl+C键触发,用于中断当前正在运行的程序。在收到SIGINT信号时,会调用cmd_signal_handle函数来处理该信号。

然后,通过signal(SIGQUIT, cmd_signal_handle)将SIGQUIT信号的处理函数设置为cmd_signal_handle。SIGQUIT信号通常由终端上的Ctrl+\键触发,用于终止当前正在运行的程序并生成一个核心转储文件。在收到SIGQUIT信号时,会调用cmd_signal_handle函数来处理该信号。

接着,通过signal(SIGTERM, cmd_signal_handle)将SIGTERM信号的处理函数设置为cmd_signal_handle。SIGTERM信号通常用于请求终止正在运行的程序。在收到SIGTERM信号时,会调用cmd_signal_handle函数来处理该信号。

最后,通过signal(SIGTSTP, cmd_signal_handle)将SIGTSTP信号的处理函数设置为cmd_signal_handle。SIGTSTP信号通常由终端上的Ctrl+Z键触发,用于将当前正在运行的程序挂起到后台,并返回shell。在收到SIGTSTP信号时,会调用cmd_signal_handle函数来处理该信号。

通过设置信号处理函数,可以在收到相应的信号时执行自定义的处理逻辑,例如优雅地退出程序或进行特定操作。

10,ping使用的是icmp协议

11,crontab命令

Linux系统下crontab 是用来定期执行程序的命令。

当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。
crontab -e:编辑当前用户的 crontab 文件。
crontab -l:列出当前用户的 crontab 文件中的所有作业。
crontab -r:删除当前用户的 crontab 文件。
而 linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

crontab [ -u user ] file

或者

crontab [ -u user ] { -l | -r | -e }

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数说明:

-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表
时间格式如下:

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,依次类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,依次类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,依次类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,依次类推

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。

执行时间 格式
每分钟定时执行一次 * * * * *
每小时定时执行一次 0 * * * *
每天定时执行一次 0 0 * * *
每周定时执行一次 0 0 * * 0
每月定时执行一次 0 0 1 * *
每月最后一天定时执行一次 0 0 L * *
每年定时执行一次 0 0 1 1 *
下面再看看几个具体的例子:

0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 

50 7 * * * /sbin/service sshd start  意思是每天750开启ssh服务 

50 22 * * * /sbin/service sshd stop  意思是每天2250关闭ssh服务 

0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 

1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件 

00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

30 6 */10 * * ls  意思是每月的1112131日是的630执行一次ls命令

12,vim /etc/sysconfig/network-scripts/ifcfg-ens33

vim /etc/sysconfig/network-scripts/ifcfg-ens33是一个用于配置网络接口的配置文件,通常在Linux系统中使用。

具体解释如下:

/etc/sysconfig/network-scripts/是存放网络接口配置文件的目录。
ifcfg-ens33是一个具体的网络接口配置文件,其中ens33是网络接口的名称。
在这个文件中,你可以对该网络接口进行各种配置,例如设置IP地址、子网掩码、网关、DNS服务器等。这些配置项可以根据你的网络环境和需求进行自定义。

通过编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,你可以修改网络接口的配置参数,以满足你的网络需求。一旦你修改了该文件并保存,网络接口的配置将会被更新,并且你可能需要重新启动网络服务或重启系统才能使设置生效。

请注意,具体的配置项和语法可能会因操作系统和网络管理工具的不同而有所差异。在编辑这个文件之前,建议备份原始文件以防止意外情况发生。

15,systemd

systemd是一个Linux系统初始化系统和服务管理器。
systemd被广泛用于现代Linux发行版,如Ubuntu、CentOS、Fedora等。

systemd的设计目标是提供更快的启动时间、更有效的系统资源管理、更简化的服务管理和更强大的功能。它通过并行启动系统进程,优化资源分配和管理,提供更好的故障恢复和错误处理,以及提供更丰富的服务管理功能,来提升系统的性能和可靠性。

总之,systemd是一个功能强大的初始化系统和服务管理器,它在现代Linux系统中扮演着关键的角色,提供了更快、更高效和更可靠的系统管理功能。

14,centos下将一个进程加入到systemd下

例如将一个可执行程序imsagt添加到systemd下
要求能使用以下命令:

 service imsagt start
 service imsagt stop 
 service imsagt restart
 service imsagt status

步骤一:现在系统的/etc/systemd/system/下新建一个imsagt.service文件(systemd配置文件)

[Unit]
#描述信息
Description=Embedway imsagent

#该服务在网络服务(network.target)启动之后才会启动。
#这样可以确保在服务启动时网络已经准备就绪
After=network.target

[Service]

#重启;表示无论服务是由于错误退出还是正常退出,systemd都会尝试自动重新启动该服务
#使用service imsagt stop结束不会重启
Restart=always

#进程的绝对路径
ExecStart=/usr/local/bin/imsagent -s 0.0.0.0 -p 9001 -i 9001

#pkill -15 进程.杀死该进程 
ExecStop=pkill -15 /usr/local/bin/imsagent

#表示在服务意外停止后,systemd会立即尝试重新启动该服务,而不会等待任何间隔时间
RestartSec=0


[Install]
#multi-user.target是一个systemd的默认目标,它是在多用户模式下启动时使用的目标
#你告诉systemd该服务应该在系统进入多用户模式时启动。
#这意味着,当系统启动或者切换到多用户模式时,该服务将被自动启动。
WantedBy=multi-user.target

步骤二:#重新加载systemd daemon(系统守护进程)

 sudo systemctl daemon-reload

步骤三:启动imsagt服务

开机时启动
 sudo systemctl enable imsagent
开始启动
 sudo systemctl start imsagent

15,python3下的pyinstaller

pyinstaller可以将python语言的文件打包为一个可执行程序,该程序无需依赖python即可运行;

pyinstaller -F imsagt.py -n xinmingzi
默认生成一个dist文件夹,在dist里面有生成的可执行文件

16.ll命令

ll命令是ls -l命令的一个简便方式,用于以长格式列出目录中的文件和子目录,并显示详细的文件信息。

具体来说,ll命令将会显示以下信息:

文件或目录的权限(如drwxr-xr-x)
文件或目录的硬链接数量
文件或目录的所有者
文件或目录的所属组
文件或目录的大小(以字节为单位)
最后修改的日期和时间
文件或目录的名称
此外,ll命令通常还会使用颜色来区分不同类型的文件,比如蓝色表示目录,绿色表示可执行文件等。

17,scp命令

将本地的myServer.py文件 复制到远端192.168.20.2的imsagt文件夹下

scp myServer.py  192.168.20.2:/code/pratice/imsagt

18虚拟机网口的NAT模式和VMnet1(仅主机模式)的区别

NAT模式和VMnet1(仅主机模式)是VMware虚拟机网络中的两种不同网络模式,它们有以下区别:

NAT模式(Network Address Translation):在NAT模式下,虚拟机与主机之间是通过虚拟网络设备进行通信的。虚拟机的网络流量会通过主机的物理网络接口进行转发,但是源IP地址会被NAT进行转换,使得虚拟机的IP地址与主机所在的物理网络的IP地址范围一致。这样可以实现虚拟机与外部网络的通信,但是外部网络无法直接访问虚拟机。

VMnet1(仅主机模式):在VMnet1模式下,虚拟机与主机之间是通过虚拟网络设备进行直接连接的,与主机的物理网络接口无关。虚拟机和主机在同一个虚拟网络中,它们可以直接进行通信,相互之间可以互相访问。但是虚拟机无法通过物理网络接口与外部网络进行通信。

总结来说,NAT模式适用于需要虚拟机与外部网络通信的场景,而VMnet1模式适用于只需要虚拟机与主机互相通信的场景。

19,df-h

df-h检查磁盘空间的使用情况

20,ipcrm -a

ipcrm -a 是一个 Linux 命令,用于删除系统中所有的 System V 共享内存段、消息队列和信号量

21,netstat -tuln | grep 9001

这个命令是一个在Linux系统中用来查看网络连接状态的命令。我们可以分解这个命令的每个部分来理解它的功能:

netstat: 这是一个网络统计命令,用于显示网络连接、路由表、接口统计等网络相关信息。

-tuln: 这是netstat命令的参数,用来指定显示的信息类型。

-t: 显示TCP协议的连接状态。
-u: 显示UDP协议的连接状态。
-l: 只显示监听状态的套接字。
-n: 以数字形式显示地址和端口号,而不是尝试解析主机名、服务名等。
|: 这是一个管道符,用来将一个命令的输出作为另一个命令的输入。

grep 9001: grep是一个文本搜索工具,用来搜索包含特定模式的文本行。这里,它用来搜索包含数字9001的行,即显示所有与端口9001相关的网络连接状态。

所以,整个命令netstat -tuln | grep 9001的意思是:显示所有TCP、UDP的监听端口,并从中搜索与端口9001相关的行。

22, snmptrapd的使用

SNMPTRAP是SNMP(简单网络管理协议)的一个重要组成部分,用于网络设备向SNMP管理器发送事件通知。当被监控的设备或网络段出现特定事件,如性能问题、接口故障或其他需要关注的状况时,SNMP代理会主动发送一个SNMPTRAP消息给预配置的管理站。

SNMPTRAP的工作原理是事件驱动,即当被监控端发生相关事件时,会立即触发TRAP消息的发送。这与SNMP的主动采集方式不同,后者需要NMS(网络管理系统)定期轮询被监控设备以获取状态信息。因此,SNMPTRAP能够在NMS几乎无延迟地得知故障发生,从而加快故障发现和处理的速度。

SNMPTRAP的主要功能包括:

事件通知:及时将网络中的故障、错误或警报等事件通知给NMS。
实时监控:允许NMS实时监控网络设备的状态和性能,当某些指标超出预设阈值时接收通知。
异常告警:在网络设备发生故障、错误或异常情况时,向NMS发送告警信息。
远程管理:在某些情况下,SNMPTRAP还可以用于远程管理网络设备,如发送重启或配置修改等指令。
为了使用SNMPTRAP,网络设备和NMS都需要支持该协议,并且需要正确配置TRAP消息的接收和处理机制。这通常包括设置TRAP接收器的IP地址、端口号以及社区字符串或安全名称等身份验证信息。

snmptrapd就是在没有接收他的设备的时候,在本机去使用snmptrapd去接收SNMP的trap消息;

创建trapd配置文件

touch snmptrapd.conf

打开snmptrapd.conf文件

#authcommunity是为了设置所有用户的访问权限:可执行,记录,传递。
#community设定为public或者换成任何你设定的字符串,发送端也要同步
authcommunity execute,log,net public
snmpTrapdAddr                udp:162  # 指定协议以及发送端口(尽量写成snmp的常用端口162)

使用

snmptrapd -M /home/super/snmp/mibs/:/home/super/snmp -C -c /home/super/snmp/trap/snmptrapd.conf -df -Lo
snmptrapd -M /usr/local/share/snmp/mibs/ -C -c /home/l/snmptrapd.conf -df -Lo

# -M 设备mib存放的文件夹
# -m 指定.mib文件
# -C 和 -c配合使用 只读-c后指定的配置文件
# -c snmptrapd.conf trapd配置文件
# -d 以16进制打印SNMP请求数据包和SNMP响应数据包
# -Lo 标准输出到控制台
# -Lf 输出到文件中
# -f Do not fork() from the calling shell. 告诫用户不要在shell脚本或者交互式shell中调用fork() 我也不太懂什么意思orz

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值