linux开发
wuzhidefeng
这个作者很懒,什么都没留下…
展开
-
Linux磁盘操作三部曲
磁盘操作,write,fflush,fsync,sync原创 2022-08-05 16:12:50 · 356 阅读 · 1 评论 -
popen/pclose导致脚本异常终结
pclose导致脚本异常终结原创 2022-07-07 11:49:09 · 919 阅读 · 0 评论 -
如何降低程序/动态库的大小
一、自己通过源码编译如果是我们自己的程序,那我们可以通过编译debug或release版本来控制生成文件的大小。一般来说我们在开发阶段编译debug版本,这样出现问题我们可以通过gdb等工具进行调试;而在发布阶段编译release版本,这样可以大幅减小目标文件的大小。如果我们使用gcc/g++编译器的话,-g和-ggdb参数会生成debug版本。二、只有程序或动态库如果别人给了我们一个debug版本的动态库,这个时候我们不想麻烦别人重新编译,那么有没有什么好办法呢?这个时候我们就要使用一个工原创 2022-01-14 11:37:27 · 1201 阅读 · 2 评论 -
开发常见问题小策略
在日常开发过程中,经常会碰到一些小问题,每次解决了之后等到下次再遇见,基本上又忘了,所以此处对一些常见问题及处理进行记录,后面会持续更新。1、问题:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!原因:主机秘钥发生变更解决方案:使用ssh-keygen -R [your server's IP] 这条指令...原创 2021-11-05 10:39:45 · 148 阅读 · 0 评论 -
怎么知道局域网内其他设备的IP
很多时候我们需要和局域网内的另外一台设备通信,那么我们必须知道该设备的IP。但是很多时候对于一个纯后台的设备,我们接了网线或者连了某个wifi之后,我们可能需要接显示屏然后敲ifconfig命令才能知道它的IP,这样就很不方便。下面提供两个方法。PING我们将自己的电脑也接入该局域网,查看自己电脑的IP地址,然后依次ping其可能的IP。命令:for/l %i in (1,1,255) do ping 192.168.1.%i -w 1 -n 1| find "回复"ARP直接使用...原创 2021-10-25 13:56:51 · 8018 阅读 · 0 评论 -
FTP出现500 Illegal PORT command
最近公司扩展海外业务,所以购买了一台亚马逊的服务器,在上面部署了FTP服务器(vsftpd)。后面我就通过命令行来测试这个FTP服务。登录服务器没有问题,但是每当我使用诸如ls、put这样的命令就会收到服务器返回500 Illegal PORT command,如下图所示:两条通道FTP客户端会与FTP服务器建立两条连接通道,一条为命令通道,一条为数据通道。命令通道为客户端主动发起,连接服务器的21端口(如果没有修改默认端口的话)。既然能够登陆成功说明这条通道是没有问题,ls这类的命令出现问题是原创 2021-08-19 14:13:37 · 10214 阅读 · 0 评论 -
Linux进程调度(1)-进程状态
Linux进程调度算是非常重要的知识点了,现在多进程、多线程开发如此普遍,多少还是要对Linux的进程调度系统有些熟悉的。在开始讲解真正的进程调度知识之前,有必要先说一下进程状态这个小知识。分类Linux进程状态主要分为:1、R (TASK_RUNNING),可执行状态2、S (TASK_INTERRUPTIBLE),可中断的睡眠状态3、D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态4、T/t (TASK_STOPPED or TASK_TRACED),暂停状态原创 2021-08-12 17:39:19 · 261 阅读 · 0 评论 -
多线程下的GDB调试方法
在Linux系统下做程序开发,GDB基本上是绕不过去的一门技术。很多初学者觉得GDB调试比较难,会本能的排斥,转而使用逐级增加日志打印的方式来调试。这种方式比较容易,但是相对来说比较麻烦,需要修改本地代码、编译、部署,花费的时间比较长。如果打印的部分没有达到预期目标,还需要反复修改代码、编译、部署。所以学会GDB调试程序是你进阶的一大步。启动GDB调试启动GDB分为两种,一种是直接使用GDB启动调试程序,另外一种是程序已经启动了,现在我们需要使用GDB来调试它。第一种,假定程序名为test,直接gd原创 2021-07-27 14:47:47 · 857 阅读 · 0 评论 -
linux如何修改固定IP
新装的linux系统容易出现重启后ip地址发生改变的问题。本人所使用系统为ubuntun14.04和Red Hat Linux release 9 (Shrike),不同系统可能目录有所不同,请注意。 1、ubuntun14.04目录为/etc/network/interfaces.修改文件内容为 2、Red Hat Linu原创 2017-09-14 15:31:52 · 515 阅读 · 0 评论 -
apt-get 提示 无法解析域名“cn.archive.ubuntu.com” 的解决
今天用公司电脑(ubuntu)想使用apt-get安装一些软件,系统提示无法解析域名“cn.archive.ubuntu.com”。原因是dns没有配置,解决办法 加入dns服务器地址,比如:vi /etc/resolv.confnameserver 202.96.134.133nameserver 8.8.8.8但是使用该方法会发现重启电脑之后resolv.conf文件内容会还原。应该选择修改/...原创 2018-06-01 16:59:47 · 43321 阅读 · 19 评论 -
ubuntu设置开机启动的一些方法
x11vnc开机启动之前在ubuntu14上安装过x11vnc,设置开机启动的方法如下: 创建/etc/init/x11vnc.conf文件 写入以下内容: start on login-session-start script /usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -noxrecor...原创 2019-04-18 15:25:54 · 2890 阅读 · 0 评论 -
ubuntu时间不对的解决方法
使用ubuntu系统,大家经常会碰到系统时间 不对的问题。时间不对一般分为2种,一种是系统时间和实际北京时间相差了几个小时,这个一般是系统时区设置的问题;另外一种系统时间和北京时间的差值为随机值。1、时区不对通过查看/etc/localtime可以看到本地的时区,如果时区不是上海可以新建一个软链接,改成上海时区2、非时区问题可以通过date命令修改时间或者通过ntpdate...原创 2020-04-01 10:12:22 · 4668 阅读 · 0 评论 -
将ubuntu(linux)的网络通过网线分享给其他设备
简述一般情况下,我们都是通过路由器来共享网络,各个设备都连接同一个wifi就可以了。但是有的场景下,可能我们的工控机会直接通过4G模块插入4g卡来获得网络访问,其他设备如果通过有线连接我们的工控机,是否也可以获得网络访问呢?答案是可以。方法首先点击界面的网络图标选择Edit Connections,在弹出的页面中点击Add,然后点击Create,如下图所示:切换到Ethernet页面,选择需要分享的网卡(即其他设备有线连接的网卡),然后再切换到IPv4 Settings页面,将Met原创 2021-07-07 14:54:35 · 9388 阅读 · 1 评论 -
ubuntu给用户增加sudo权限并设置sudo免密
网上关于如何给普通用户增加sudo权限的方法很多,但是很多时候你按照网上的方法设置了以后,你在命令行下执行sudo命令居然还是需要输入密码。为什么别人都行但是就你不行呢?一般的方法假如你的用户名为test,那么基本上就是按照下图的方式编辑/etc/sudoers文件增加一行话就可以了。为什么别人可行经过我反复研究,如果你的用户是装系统的时候建立的,那么你按照这个方法设置以后,终端执行sudo仍然需要输入密码;但是如果你的用户是后期通过adduser命令后期创建的,那么你通过上图的配置是完原创 2021-07-02 13:12:05 · 965 阅读 · 1 评论 -
父进程被kill后,子进程的归属
一般来说如果我们启动了一个A进程,然后通过A进程再启动B进程,那么A进程就是B进程的父进程,或者说B进程是A进程的子进程。那么如果这个时候我们强杀了A进程之后,B进程会处于什么状态呢?是继续运行还是也退出了?实际情况是这两种情况都有可能发生,取决A进程的状态。如果A进程是会话首进程,那么A退出后,B进程也会退出;反之如果A进程不是会话首进程,那么A退出后,B进程不会退出。说到这,你可能懵逼了,什么是会话首进程,怎么看一个进程是不是会话首进程呢。首先,每个进程都会属于一个进程组,每个进程组有个原创 2021-03-23 20:30:02 · 5114 阅读 · 0 评论 -
linux双网卡同时访问内外网
场景很多公司的内网是个局域网,不允许外网访问。但是很多时候,我们既需要内网的资源,又需要同时访问外网。这个时候一台双网卡的设备就可以解决。操作一般情况下,/etc/network/interfaces文件保存了本机的网络配置信息。在该文件里设置外网外卡的相关网络配置,比如ip、网关、子网掩码等,但是不设置内网网卡的网络配置。这个时候你会发现设备可以正常访问外网,但是无法ping通局域网内的其他设备。为什么会出现这个情况?因为设备流量默认走外网的网关,自然也就无法到达局域网内的其他设备。那原创 2021-03-02 20:29:25 · 2560 阅读 · 0 评论 -
动态库so的版本兼容问题
现在的程序开发中,基本上我们都会依赖一些系统的或者第三方的动态库。如果我们将我们的可执行程序拷贝到一台新的服务器上,如果新的服务器上没有对应的动态库,那显然我们的可执行程序是无法运行的。这一点是显而易见的。复杂的情况是新的服务器上有这些动态库,但是动态库的版本不一样,我们的程序是否还可以运行呢?可能大部分人的答案是不行。那正确答案应该是什么呢?首先说明一下动态库的命名,一般情况下动态的命名采用libxxx.so.a.b.c,其中a代表大版本号,b代表小版本号,c代表更小的版本号。大部分的说法是只要大原创 2020-09-09 18:16:17 · 1878 阅读 · 0 评论