
Linux
文章平均质量分 73
青衫客36
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ubuntu 22.04上重启网络
在Ubuntu 22.04中,默认的网络管理工具是 netplan。因此,我们可以使用 netplan 或 NetworkManager 来管理网络。ip a。原创 2024-05-21 12:58:16 · 12447 阅读 · 0 评论 -
Ubuntu 22.04 安装JDK17
转载自:https://www.jianshu.com/p/96b961e96640。转载 2024-05-20 12:53:54 · 676 阅读 · 0 评论 -
Linux- cron调度进程
cron是一个 Unix 类操作系统中的时间调度守护进程,用于在特定的时间或间隔运行指定的命令或脚本。它非常适合自动化系统管理和维护任务,如备份、日志轮转、系统监控等。以下是cron守护进程的详细介绍。cron。原创 2024-05-15 12:45:30 · 494 阅读 · 0 评论 -
云服务器上Redis数据库被攻击实录+总结
通过以上步骤,可以详细了解攻击过程,并采取有效的措施防止类似攻击的发生。增强 Redis 服务器和系统的安全性是关键,确保只有受信任的用户能够访问和管理服务器。计划任务格式:计划任务的格式是一个定时器表达式后跟执行命令。这条任务每 15 分钟执行一次curl命令下载并执行远程脚本。文件路径:攻击者将 Redis 配置为将数据持久化到cron计划任务目录,如。这导致持久化的内容成为cron守护进程的一部分计划任务。持久化机制的滥用:通过 Redis 的SAVE。原创 2024-05-15 11:40:15 · 2003 阅读 · 0 评论 -
CentOS8 安装Cloc代码统计工具
cloc 是一款开源工具,用于计算源代码文件中的实际代码行数、注释行数和空白行数,支持多种编程语言。原创 2024-04-06 22:56:45 · 636 阅读 · 0 评论 -
Centos安装mysql8
【代码】Centos安装mysql8。原创 2024-03-09 12:31:44 · 417 阅读 · 0 评论 -
Linux多线程编程- pthread_self()
类型的,通常是一个无符号的长整型值,不过具体的类型是由实现定义的,这意味着它可以在不同的操作系统上有不同的表示。函数是 POSIX 线程库的一部分,它提供了一个非常简单的功能:获取当前线程的唯一标识符。在实现线程的同步操作时也很有用,例如,在一个线程中设置一个锁,并且只允许拥有这个锁的线程来释放它。该函数不接受任何参数,并且总是成功的,因此它没有返回错误代码。在上面的程序中,每个线程打印出它的线程ID。变量可以用来识别线程,但是在线程的执行函数内部,当我们调用这个函数时,它将返回当前线程的。原创 2023-11-04 18:34:45 · 645 阅读 · 0 评论 -
Linux多线程编程- pthread_detach()
函数是 POSIX 线程(pthreads)库的一部分,它用于将指定的线程置于分离状态(detached state)。分离状态的线程在终止时会自动释放其资源回操作系统,包括线程的堆栈和线程描述符。这意味着其他线程不需要并且也不能对分离线程调用来回收其资源。当创建一个线程时,默认情况下它是可结合的(joinable),这意味着其他线程可以通过调用等待该线程结束,并回收该线程结束时返回的资源。然而,在某些情况下,我们可能不需要等待线程结束,也不打算从线程收回任何值。在这种情况下,可以使用。原创 2023-11-04 18:18:28 · 2540 阅读 · 0 评论 -
Linux- 由映射文件I/O问题引出的SIGBUS & 空洞文件(Sparse File)
SIGBUS是一个在Unix-like操作系统中的信号,它通常表示非法访问内存,而这种非法访问的原因与常见的SIGSEGV(段错误)有所不同。以下是可能导致SIGBUS:某些硬件平台要求数据(如整数或浮点数)在内存中以特定的地址对齐(如2或4的倍数)。如果程序试图在这些平台上访问未对齐的数据,就可能收到SIGBUS。:使用mmap()系统调用映射文件到内存并尝试访问文件后面的内容可能会产生SIGBUS。例如,如果文件在被映射后被截断,那么当程序尝试访问被截断部分的数据时,就会得到SIGBUS。原创 2023-10-25 23:38:43 · 704 阅读 · 0 评论 -
Linux网络编程- IO多路复用
IO多路复用是处理大量并发网络连接的强大技术。尽管其编程复杂度较高,但考虑到其在高并发环境下的性能和效率,它仍然是许多网络应用的首选技术。原创 2023-10-22 19:31:08 · 211 阅读 · 0 评论 -
Linux网络编程杂谈(聊聊网络编程背后的故事)
以TCP为例,当 TCP 决定发送数据时,这些数据需要经过多个处理阶段才能真正被传输到物理网络。其中一个关键步骤是将数据移动到网络接口卡 (NIC)。这个过程的各种优化和细节可能会依据操作系统、NIC 设计和网络配置而有所不同,但上述流程为数据在大多数现代系统中的通常路径提供了一个概述。原创 2023-10-22 12:31:36 · 461 阅读 · 0 评论 -
Linux网络编程-极简HTTP&UDP服务器
80802048然后在浏览器或者使用curl工具访问http://localhost:8080,应该能够看到“Hello, World!”的响应。原创 2023-10-21 18:36:48 · 611 阅读 · 0 评论 -
Linux多线程编程- 条件变量(Conditional variable)
在多线程环境中,条件变量提供了一种方式,使得一个线程可以等待某个特定条件成为真,而另一个线程在该条件成为真时可以通知等待线程。原创 2023-10-17 14:56:55 · 1111 阅读 · 0 评论 -
Linux- 命名信号量和无名信号量的区别
总的来说,区分这两种信号量类型的主要原因是因为进程和线程之间有基本的差异。进程通常是独立的、隔离的执行实体,拥有自己的地址空间。线程,另一方面,是进程内的轻量级实体,共享相同的地址空间。因此,进程间同步需要一个跨进程的可见机制,而线程间同步则可以在单一地址空间内完成。:无名信号量存在于进程的地址空间中,它们不关联任何外部的名称。命名信号量和无名信号量之间的区别主要在于它们的可见性、生命周期以及如何在进程或线程之间共享。在一个进程内,所有线程共享相同的内存空间,所以它们可以直接访问和操作同一个无名信号量。原创 2023-10-16 23:12:33 · 547 阅读 · 0 评论 -
Linux多线程编程- 无名信号量
无名信号量(在 POSIX 环境下通常指sem_t类型的信号量)是用于同步和互斥的原语,它允许线程和进程按照预期的顺序执行,并确保对共享资源的安全访问。无名信号量与命名信号量的主要区别在于它们的可见性和生命周期。无名信号量通常用于一个进程内的线程间同步,而命名信号量用于多个进程间的同步。原创 2023-10-16 23:10:43 · 442 阅读 · 0 评论 -
Linux多线程编程- 命名信号量
命名信号量是一种同步原语,主要用于进程间同步和通信。它们在不同的进程之间是可见的,因此可以用来控制多个进程对共享资源的访问。原创 2023-10-16 22:44:13 · 470 阅读 · 0 评论 -
Linux- 自定义一个ARP请求
自定义一个ARP请求或响应,并使用AF_PACKET套接字发送,需要手动创建整个以太网帧。:运行此代码需要root权限,因为使用AF_PACKET需要对网络接口有完全的访问权限。而且,确保修改代码中的TARGET_IP和INTERFACE_NAME为我们想要查询的目标IP和我们使用的网络接口名。这只是一个简单示例,可以根据需要进行修改和扩展。如何设置mac地址为 00:15:5d:31:81:8c?为了设置MAC地址为,不能使用memset,因为memset会将同一个值设置到所有的字节中。原创 2023-10-14 22:33:17 · 667 阅读 · 0 评论 -
Linux中的nmap命令
nmap(Network Mapper)是一个开源的网络扫描和安全审计工具,它被设计为用于发现设备在网络上运行并确定其开放的网络端口。该工具常用于网络安全实践和网络管理任务,例如检查开放的网络端口,检测网络服务及其版本,以及确定设备的操作系统类型。原创 2023-10-14 20:12:16 · 1755 阅读 · 0 评论 -
Linux中的nc命令
是一个非常强大的网络工具,经常被描述为网络的"瑞士军刀"。如果机器有多个IP地址,可以使用此选项指定要用于连接的IP地址。如果只希望使用IP地址并不想解析主机名,可以使用此选项。为了获取完整的选项列表,以及更深入的描述和示例,建议查看。当想要在特定的本地端口上监听或发起连接时使用此选项。选项类似,它在连接建立后执行指定的命令。:指定在两个输入之间的延迟,这对于模拟慢速连接特别有用。选项可以打印每个数据包的hex dump,有助于调试。:指定一个文件,用于存放hex dump网络流量。:指定要执行的程序。原创 2023-10-14 19:30:49 · 1088 阅读 · 0 评论 -
Linux- DWARF调试文件格式
DWARF是一个用于在可执行程序和其源代码之间进行关联的调试文件格式。当开发者使用调试编译选项(例如,使用gcc时的-g标志)编译程序时,编译器会生成这种格式的调试信息。这些信息在后续的调试过程中非常有用,例如,使用gdb(GNU调试器)。以下是DWARFDWARF起初是为了满足UNIX系统上的高效、紧凑和跨平台的调试需求而设计的。自那时起,它已经经历了多个版本,每个版本都增加了新的特性。:从DWARF 1到DWARF 5,每个版本都引入了新的特性和改进,以支持新的编程语言特性、编译器优化等。DWARF。原创 2023-10-12 23:33:51 · 2296 阅读 · 0 评论 -
Linux- curl命令
是一个强大且多功能的命令行工具,用于从或向服务器传输数据。尽管它支持许多协议,但在现代Web开发中,它主要用于HTTP和HTTPS请求。的完整功能和选项,请参考其官方文档或通过命令行输入。原创 2023-10-12 15:55:54 · 371 阅读 · 0 评论 -
Linux网络编程- 开启混杂模式(PROMISC)的两种方式
在开发抓包工具或网络监控应用程序时,通常选择哪种方法取决于具体需求。如果只是想要为特定的捕获会话设置混杂模式,而不影响系统上的其他应用程序,使用。如果需要在设备级别更改接口的状态,并希望所有应用程序都能在混杂模式下看到数据包,那么使用。两者都使网络接口能够捕获所有经过的数据包,而不仅仅是发往接口的数据包。以下两种方式都是用于开启混杂模式,但它们的工作方式略有不同。原创 2023-10-11 00:13:43 · 3023 阅读 · 0 评论 -
Linux网络编程- struct packet_mreq & setsockopt()
是一个数据结构,用于 Linux 中的原始数据包套接字,当我们想改变套接字的行为以接收特定类型的数据包时,它与函数配合使用。下面是mr_addressmr_type而如果想加入一个特定的多播地址,则设置mr_type为,并提供相应的多播MAC地址。原创 2023-10-10 23:59:15 · 983 阅读 · 0 评论 -
Linux- 使用ssh远程连接
如果在Linux系统上运行提示,这意味着SSH服务没有安装或者它可能在系统上有一个不同的服务名称。安装后,需要启动SSH服务。按照上述步骤,应该能够在Linux机器上安装、启动并运行SSH服务。原创 2023-10-09 21:18:36 · 884 阅读 · 0 评论 -
Linux网络编程- recvfrom() & sendto()
recvfrom()函数是一个系统调用,用于从套接字接收数据。该函数通常与无连接的数据报服务(如 UDP)一起使用,但也可以与其他类型的套接字使用。与简单的recv()函数不同,recvfrom()可以返回数据来源的地址信息。:一个已打开的套接字的描述符。:一个指针,指向用于存放接收到的数据的缓冲区。:缓冲区的大小(以字节为单位)。:控制接收行为的标志。MSG_PEEK:一个指针,指向一个sockaddr结构,用于保存发送数据的源地址。:一个值-结果参数。开始时,它应该设置为src_addr缓冲区的大小。原创 2023-10-07 23:16:05 · 12720 阅读 · 0 评论 -
Linux网络编程- 原始套接字(Raw Socket)
原始套接字(Raw Socket)提供了一种机制,允许应用程序直接访问底层传输协议,绕过操作系统提供的传输层接口。这种套接字通常用于实现新的协议或对现有协议进行低级别的操作。以下是对原始套接字的详细介绍:定义与用途:创建:特权:工作方式:用途与限制:注意事项:跨平台的差异:总的来说,原始套接字是一个非常强大的工具,但也需要谨慎使用。正确使用它需要对网络协议有深入的理解,而滥用它可能导致网络问题或被视为恶意活动。创建链路层的原始套接字允许我们直接与链路层设备(例如以太网适配器)交互,从而可以发送和接收链路层帧原创 2023-10-07 22:47:51 · 6831 阅读 · 0 评论 -
Linux- 后台运行符&、nohup、disown
在Unix-like的操作系统(如Linux和macOS)的shell中,特别是在Bash这样的shell中,经常用作后台运行符号。让我们深入了解一下其功能和用法。原创 2023-10-02 23:25:56 · 3317 阅读 · 0 评论 -
Linux- fg命令 & bg命令
fg是Unix-like操作系统(如Linux和macOS)中的一个shell内建命令,用于将后台作业带到前台执行。这个命令常用于与bg(后台执行)命令和jobs(列出当前作业)命令一起,进行shell中的作业控制。下面是对fg当在命令行中运行一个命令并中断它(例如使用Ctrl+Z),该命令会被暂停并放入背景。此时,可以使用fg命令来恢复该命令并在前台继续执行。例如,如果运行sleep 60,然后使用Ctrl+Z将其暂停,此时,可以键入fg来继续该命令。如果有多个后台作业,可以使用jobs。原创 2023-10-02 23:03:23 · 2868 阅读 · 0 评论 -
Vim同时打开多个文件
在 Vim 中,可以同时打开多个文件并使用分屏模式来查看它们。原创 2023-09-30 19:54:29 · 3299 阅读 · 0 评论 -
ls -l 命令列出的total是什么
尽管尾部合并和 COW 可以提供存储和性能上的优势,但它们也带来了额外的复杂性。例如,当执行文件删除或修改操作时,文件系统必须跟踪和管理块中的哪一部分属于哪个文件,并确保数据的完整性和一致性。但是,在权衡后,这些技术在很多现代文件系统中仍被认为是有价值的,并为提高存储效率和性能提供了有效的手段。原创 2023-09-28 15:12:57 · 1008 阅读 · 0 评论 -
Linux网络编程- ioctl()结合struct ifreq使用案例
当我们使用ioctl()函数和请求码来获取网络接口的标志时,我们需要提供一个结构体作为参数。这个结构体包含了网络接口的名称和一个将被填充的字段,该字段将在调用返回时包含所请求的标志。原创 2023-09-27 14:47:03 · 382 阅读 · 0 评论 -
Linux网络编程- struct ifreq & ioctl() 系统调用
是一个数据结构,用于各种与接口相关的输入/输出控制 (ioctl) 调用。它的主要用途是在网络编程中获取和设置网络接口的属性。这个结构体在头文件中定义。以下是: 一个字符数组,表示接口的名称,如 “eth0”, “wlan0” 等。: 一个类型的结构,表示接口的地址。: 同样是一个类型的结构,表示接口的网络掩码。: 表示接口的广播地址。: 表示接口的标志,如IFF_UP(接口正在运行)、(接口支持广播)、(接口在混杂模式下)等。: 表示接口的硬件(通常是 MAC)地址。原创 2023-09-27 14:11:16 · 6174 阅读 · 0 评论 -
Linux网络编程- sockaddr & sockaddr_in & in_addr
是用于通用的套接字地址结构体,通常在多种网络API调用中被用作参数,尤其是在套接字编程中。它是许多具体套接字地址结构体(例如用于IPv4、用于IPv6)的超类或通用类型。原创 2023-09-27 13:39:26 · 1545 阅读 · 0 评论 -
Linux网络编程- ether_header & iphdr & tcphdr
是一个数据结构,用于表示以太网(Ethernet)帧的头部。这个结构体在头文件中定义。当你处理或分析以太网帧时,可以使用这个结构体来访问和解读 Ethernet 头部的各个字段。以下是: 目标 MAC 地址 (Destination MAC address),一个 6 字节的数组。: 源 MAC 地址 (Source MAC address),一个 6 字节的数组。: 帧类型或以太网协议。这个字段表示载荷的类型/协议。例如,如果值是 0x0800,那么载荷是一个 IPv4 数据包;原创 2023-09-27 11:52:18 · 2190 阅读 · 0 评论 -
Linux网络编程- inet_pton() & inet_ntop()
函数是 “Internet presentation to network” 的缩写,用于将 IP 地址的表现形式(例如字符串形式的 “127.0.0.1”)转换为其网络字节序的二进制形式。这个函数支持 IPv4 和 IPv6 地址。原创 2023-09-26 22:20:30 · 1752 阅读 · 0 评论 -
Linux- 网络编程初探
原始套接字(Raw Socket)是一种提供较低级别网络访问的套接字。通过使用原始套接字,应用程序可以直接发送或接收网络层如IP的数据包,或者传输层如TCP、UDP的段,而无需通过常规的套接字API提供的协议处理。:使用原始套接字,你可以操作或构建自己的协议,或者直接与现有协议(如ICMP)交互。:通常,当发送或接收数据包时,操作系统内核会为你处理很多细节,例如TCP的三次握手或IP头的填充。但是,使用原始套接字,你可以直接构建或解析这些协议,从而绕过标准的内核处理。原创 2023-09-26 21:10:56 · 472 阅读 · 0 评论 -
Linux网络编程- 网络字节顺序
网络字节顺序是一种规定的数据表示格式,被用于TCP/IP协议栈,特别是在网络传输数据时。它确保不同的计算机和架构之间可以无缝地通信。网络字节顺序是大端字节序(big-endian)。原创 2023-09-26 20:40:00 · 385 阅读 · 0 评论 -
Linux- POSIX共享内存对象
POSIX共享内存对象是一种允许多个进程共享一个给定名称的内存区域的机制。这些共享内存对象通常与POSIX信号量结合使用,以实现进程之间的同步。共享内存是IPC(进程间通信)机制中最快的方法之一,因为它允许进程直接访问同一块内存,而无需进行任何数据复制。原创 2023-09-24 22:56:57 · 387 阅读 · 0 评论 -
Linux- 内存映射文件(Memory-Mapped File)
内存映射文件(Memory-Mapped File)是⼀种将文件内容映射到内存中的机制,允许程序直接访问文件数据,就好像这些数据已经被加载到了内存⼀样。这个机制允许文件的内容被映射到⼀个进程的地址空间,从而允许程序以⼀种更高效的方式读取或写入文件数据,同时,多个进程可以映射同⼀个文件,从而实现进程间的数据共享。这对于进程间通信非常有用。原创 2023-09-24 22:45:34 · 2116 阅读 · 0 评论 -
Linux- 调用signal 设定特定信号sig的处理函数handler
默认会终止进程)可以被覆盖,如果为该信号注册了一个处理函数。在这个例子中,处理函数只是简单地打印了一条消息,而不是终止进程。调用 signal 可以设定特定信号 sig 的处理函数 handler。送过来的信号 sig 时,便会开始执行 handler 函数。通过这⼀对函数便可以实现最基本。这个程序展示了如何在父子进程之间使用信号。它创建一个子进程,父进程向子进程发送一个。信号,子进程捕获并处理这个信号,然后继续执行并最终正常结束。所以,这个程序的关键是理解信号的默认行为(例如,原创 2023-09-24 16:21:02 · 468 阅读 · 0 评论