Linux
soulsoul_god
慢一点,当你理解的越多,需要记得就越少。
展开
-
git教程以及常见操作
Git 教程 | 菜鸟教程原创 2022-08-25 16:34:22 · 123 阅读 · 0 评论 -
制作debian64位编译小系统
环境:linux操作系统sudo apt-get install debian-archive-keyring 安装依赖,使用debootstrap命令创建文件系统。$ mkdir ~/build; cd ~/build# 安装必要依赖 debootstrap就是构建的命令$ sudo apt-get install qemu qemu-user-static binfmt-support debootstrap# 构建文件系统的命令$ sudo debootstrap --a原创 2021-12-28 16:34:04 · 826 阅读 · 0 评论 -
解决无网络环境下getaddrinfo引发的超时问题
问题背景:源码中在调用getaddrinfo时,如果是网络正常的环境下,getaddrinfo返回会很快,但如果无网络,机器就无法进行dns解析,从而导致getaddrinfo返回时间高达1-2分钟以上。解决方案:使用多线程执行getaddrinfo源码如下://add by xdlstruct stu_dns_info{ LPCSTR node; LPCSTR servname; struct addrinfo *hints; struct add原创 2021-09-26 09:10:12 · 1931 阅读 · 0 评论 -
centos环境搭建kippo蜜罐
kippo配置文件中默认监听的端口是2222,本文会将22端口的数据转发到2222端口,这样当有用户访问22端口的数据时,会访问到kippo 的2222端口。第一步:安装工具包yum -y install gcc python-develyum -y install python-pippip install pyasn1pip install twisted==15.2.0pip install pycrypto第二步:修改/etc/ssh/sshd_config配置文件中的原创 2021-03-15 15:56:38 · 931 阅读 · 1 评论 -
线上服务CPU100%问题快速定位实战
功能问题,通过日志,单步调试相对比较好定位。性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助。题目某服务器上部署了若干tomcat实例,即若干垂直切分的Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。问:如何定位是哪个服务进程导致CPU过载,哪个线...转载 2021-01-11 11:15:04 · 116 阅读 · 0 评论 -
socket epoll模型
linux 使用epoll主要目的是啥 为了实现非阻塞么?socket本来就有阻塞和非阻塞两种模式,与epoll无关。epoll是针对多socket操作(从select升级到poll再到epoll都是解决这个目的)。如果不用poll方法,在阻塞模式下,操作多socket,要么用多线程,要么用多进程,都会带来一定的开发复杂度和性能降低。在非阻塞模式下,就要使用轮询,浪费处理能力很厉害。所以,epoll是为了让程序只在一个线程中就能操作大量socket而提供的一个核心功能,同时还提供了很高的处理原创 2021-01-07 18:08:01 · 849 阅读 · 0 评论 -
shell传输文件、远程执行命令
使用sftp传输文件:读取ip.txt中的ip数据,连接后传输文件#!/bin/bashcat ip.txt | while read linedo echo $line lftp -u root,password sftp://$line:22 <<EOF rm -rf aaa.tar put aaa.tar byeEOFdone使用expect,ssh登录服务器,执行命令:#!/bin/bashcat ip.txt | wh原创 2021-01-07 13:31:45 · 1445 阅读 · 0 评论 -
shell sed用法
删除文件中某个字段的一行:sed -i '/config.role/d' /root/aaa.conf在查找字段的下一行添加数据://在role的下一行添加config.role = 'internal';sed -i "/role/aconfig.role = 'internal';" /root/aaa.conf删除第几行的数据:sed -i "16 d" /etc/ppp/options.xl2tpd.client在第几行插入数据:sed -i "15 i原创 2021-01-07 13:10:31 · 120 阅读 · 0 评论 -
linux上iptables nat端口转发数据
场景:C机器想发送数据到B,但它不知道B机器的IP,只能通过A进行转发。也就是数据C->A->B,这种情况下,就可以在A机器上设置nat转发,将C机器发往A机器的数据转发到B机器上去。这里要注意的一点是,我这边A、B之间建立了VPN,这样如果A机器改变了IP地址,B上面的设置不需要进行改动。但效果是一样的,都是为了实现数据转发。将发到本机udp 24082端口的数据,转发到192.168.100.10的24082端口iptables -t nat -A PREROUTI..原创 2021-01-07 11:52:14 · 693 阅读 · 0 评论 -
linux使用openssl加密压缩文件
压缩:filename为文件名,password为加密密码tar -zcf - filename |openssl des3 -salt -k password | dd of=filename.tar.gz解压:dd if=filename.tar.gz |openssl des3 -d -k password | tar zxf -原创 2021-01-07 11:35:22 · 860 阅读 · 0 评论 -
linux上程序设置开启自启动
我常用的一种方式是:将执行命令写入到/etc/rc.d/rc.local文件中,并且赋予执行权限。这样即可实现机器重启后自动启动程序的效果。原创 2021-01-07 11:32:43 · 106 阅读 · 0 评论 -
shell写入crontab数据
需要在程序中添加crontab,执行shell命令来实现:(echo "* * * * * sh /root/proxy/pull_server.sh >> /dev/null 2>&1" ; crontab -l ) | crontab原创 2021-01-07 11:30:10 · 1717 阅读 · 0 评论 -
centos环境搭建pptp服务器
pptp安装1、安装pppyum install -y ppp2、安装pptpdyum install -y pptpd3、修改/etc/pptpd.confoption /etc/ppp/options.pptpdlogwtmplocalip 192.168.11.1remoteip 192.168.11.10-1004、修改/etc/ppp/options.pptpd文件name pptpdrefuse-paprefuse-chaprefu原创 2021-01-06 18:53:44 · 2291 阅读 · 0 评论 -
socket传输大文件demo,附各函数原型
功能:实际研发过程中,发现要从服务端发送大的数据文件给客户端,但socket一次发送的数据包大小是有限制的,需要循环发送;循环发送需要考虑到文件何时发送完毕,所以,这里服务端先发送文件大小给客户端,然后再发送文件,客户端根据接收文件大小进行判定。/**struct sockaddr_in 结构体*在头文件#include<netinet/in.h>或#include <arpa/inet.h>中定义*/struct sockaddr_in{ sa_f.原创 2020-06-28 13:03:14 · 887 阅读 · 1 评论 -
【问题记录】socket断开之后,端口长时间处于CLOSE_WAIT状态
开发过程中,使用socket通信时,发现客户端发送完消息之后,主动关闭了套接字,但服务端没有主动关闭,会出现服务端上端口长时间CLOSE_WAIT的情况。客户端是在windows上,服务端是在centos上。解决方法:服务端处理完成之后,也要将套接字主动关闭。可能还有其他没有考虑到的地方,后续再继续补充。...原创 2020-04-22 10:02:26 · 953 阅读 · 0 评论 -
进程间通信-信号(一个进程往另一个进程发送信号)
程序功能:signal.c程序接收两个信号,SIGUSR1,SIGUSR2,接收到SIGUSR1之后,执行sig_usr_close函数,打印,并将全局变量m_switch置为0;接收到SIGUSR2之后,执行sig_usr_open函数,打印,并将m_switch置为1。kill.c程序主要发送两个信号,SIGUSR1,SIGUSR2。1、信号发送函数-kill()#inc...原创 2020-03-10 14:09:14 · 3472 阅读 · 0 评论 -
linux kernel 驱动模块,读写文件
linux kernel 驱动模块,读写文件测试文件:file_rw.c#define pr_fmt(fmt) KBUILD_MODNAME ": %s: " fmt, __func__#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h>#include...原创 2019-12-11 16:07:49 · 612 阅读 · 0 评论 -
GDB调试多进程与多线程
gdb调试过程中常用命令: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 r或run:运行程序。 s或step:进入函数调用 breaktrace(bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 info break :查看断点信...原创 2019-10-08 19:27:58 · 157 阅读 · 0 评论 -
Linux禁ping,屏蔽ip
要封停一个IP,使用下面这条命令:iptables -I INPUT -s IP-j DROP如:iptables -I INPUT -s 192.168.100.100 -j DROP要解封一个IP,使用下面这条命令:iptables -D INPUT -s IP -j DROP如:iptables -DINPUT -s 192.168.100.100 -j DR...原创 2019-05-15 15:47:06 · 1240 阅读 · 0 评论 -
gdb调试失效问题
使用gdb调试程序时,执行gdb 可执行程序 程序进程号报错:解决方案:gdb -iex 'set auto-load safe-path /' 可执行程序 程序进程号原创 2019-01-07 17:18:13 · 998 阅读 · 0 评论 -
Linux挂载iso镜像
第一种方式: 1、打开虚拟机设置,将ISO镜像文件加载到CD/DVD中,设备状态选中已连接、启动时连接。2、挂载镜像到/media文件夹下mount /dev/cdrom /media/挂载好后,df -h查看时会多出一个盘符 3、进入/media目录,查看文件此时,就可从查看到挂载的iso镜像中的文件。 4、卸载目录umount /dev/cd...原创 2018-12-17 16:24:09 · 51478 阅读 · 1 评论