
Linux/Unix
牛晨光
热爱技术的IT从业者
展开
-
linux动态库介绍
一、公约1. 库的命名习惯一个linux 库文件(相当于windows的DLL) 有三个不同名字的文件组成soname 文件lib + 链接库名字 + .so + .版本号每当链接库接口改变时都递增版本号。soname 文件其实只是一个符号链接而已,指向他的real name 文原创 2011-07-20 17:19:00 · 2067 阅读 · 0 评论 -
/etc/motd
/etc/motd即message of today(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,例如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。如果shell支持中文,还原创 2011-08-17 17:05:22 · 9753 阅读 · 3 评论 -
linux中的firmware
在网上随手搜一下Firmware这个单词,我们就能知道它翻译为固件。通常存储于硬件设备中的EEPROM或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个硬件产品最基础最底层工作的软件才可以称之为固件。也就是Firmware应在是在硬件设备中存储原创 2011-08-18 15:36:21 · 14697 阅读 · 0 评论 -
ubuntu中xorg.conf文件
ubuntu的用户想要查找某个配置文件时总是失败,比如X11的配置文件xorg.conf。在大多数的发向版本中此文件在 /etc/X11/xorg.conf但是子ubuntu中X11下却没有这个文件。经过查看 /var/log/Xorg.0.log发现有这样一行:原创 2011-08-18 17:59:25 · 17014 阅读 · 2 评论 -
gnome-terminal 无法最大化
我使用的是 ubuntu 11.04,使用的是gnome环境(ubuntu class),使用中发现Terminal无法完全最大化。每次点完最大化按钮发现窗体四周都留着一个缝隙,其他窗口均无问题。以为是terminal的配置问题,就又安装了一个xfce4-term原创 2011-08-26 11:59:55 · 2077 阅读 · 0 评论 -
ubuntu unity 桌面 dash 全屏显示
使用ubuntu unity的用户可能发现了,点击Dash按钮后弹出界面(那个半透明有磨砂质感的界面,相当于原来的app menu)并不是全屏的,而是龟缩在屏幕左上角。但是我发现netbook版本的是全屏,如下:于是经过查找资料和尝试发现修原创 2011-10-18 09:49:04 · 7078 阅读 · 0 评论 -
pcap/cap文件关联wireshark
前几天升级到了ubuntu 11.10,安装wireshark后发现在nautilus中双击pcap/cap文件无法打开。先看了一下wireshark的desktop文件(/usr/share/applications/wireshark.desktop),发现注册的原创 2011-10-18 10:07:57 · 8931 阅读 · 0 评论 -
修改ubuntu 11.10字体
需要使用工具gnome-tweak-tool,可以使用 sudo aptitude install gnome-tweak-tool安装。原创 2011-10-18 10:11:13 · 1735 阅读 · 0 评论 -
VIM中获取命令的打印结果
在vim中执行shell只需要输入 :!cmd即可,如 :!ls如果想把命令执行的结果复制到当前编辑的文件中(覆盖方式)只需要再!前添加一个%即可,如::%!ls最有名的使用场景要数根据外部xxd命令显示16进制:注意:如果想用vim原创 2011-10-19 12:09:34 · 2735 阅读 · 0 评论 -
vim显示匹配个数
:%s/xxx//gn关键是最后的n,代表只报告匹配的个数,而不进行实际的替换。原创 2011-11-29 12:13:40 · 11579 阅读 · 0 评论 -
监视热插拔事件
#include #include #include #include #include #include #include #include #include #include static int init_hotplug_sock(void){原创 2011-09-08 17:01:13 · 1317 阅读 · 0 评论 -
ubuntu 10.10修改开机画面 plymouth
开机画面使用的是 plymouth.先安装几个主题: sudo apt-get install plymouth-theme-* 安装官方提供的所有主题。接下来换画面,更改plymouth设置: sudo update-alternatives --config d原创 2011-09-07 16:47:42 · 1970 阅读 · 0 评论 -
动态库的文件名
libxxx.so -> libxxx.so.5 -> libxxx.so.5.1.2linker-name -> soname -> real name原创 2011-07-20 17:17:24 · 792 阅读 · 0 评论 -
Bloom Filter概念和原理
此文章图片较多,不好迁移,感兴趣的朋友请查看:http://blog.chinaunix.net/space.php?uid=24382173&do=blog&id=212666原创 2011-07-20 17:20:54 · 769 阅读 · 0 评论 -
交叉编译中的build,host,target
【实例】当前我有一个x86计算机,它上面工具很全,至少有gcc。这时我有了一个arm处理器的上网本。我想为我的arm上网本写点程序,但是因为上网本性能很差我不想在arm上开发编译,于是我就想在自己电脑上开发然后copy过去给他用。这时我就需要一个在我的x86(build)上编译一原创 2011-07-20 17:25:12 · 5092 阅读 · 0 评论 -
ubuntu 中Disk Mounter无法挂载iPhone/IpodTouch
插入iPhone时Disk Mounter出现如下提示:DBus error org.freedesktop.DBus.Error.NoReply这时需要更新libimobiledevice1等库文件,执行如下命令完成更新sudo add-apt-repository ppa:p原创 2011-07-20 17:25:45 · 2294 阅读 · 0 评论 -
死锁
一般情况下,如果同一个线程先后两次调用lock,在第二次调用时,由于锁已经被占用,该线程会挂起等待别的线程释放锁,然而锁正是被自己占用着的,该线程又被挂起而没有机会释放锁,因此就永远处于挂起等待状态了,这叫做死锁(Deadlock)。另一种典型的死锁情形是这样:线程A获得了锁1,原创 2011-07-20 17:26:58 · 918 阅读 · 1 评论 -
Vi 多行匹配字符"\_."
vi平时我们使用的匹配字符"."不能够匹配换行符号,所以我们没法使用它进行跨行匹配。如有以下数据:我们想查找所有在城市为beijing,年龄为18岁的人。name: Acity: beijingage: 18name:Bcity:shanghaiage:15name:原创 2011-07-20 17:28:05 · 7327 阅读 · 0 评论 -
vi 匹配单词"\<"和"\>"
当想匹配 "the"时,如果我们输入"/the"来查找所有的 "these"也会被匹配,所以我么们需要告诉vi我们找的the就是单词结尾。这时输入"/the\>"就不会匹配到these了。同样的防止匹配上 "sooth" 时,我们再加上"/ /\原创 2011-07-20 17:28:58 · 2436 阅读 · 0 评论 -
获得逻辑cpu个数
#include #include int main(){ printf("_SC_NPROCESSORS_ONLN = %ld\n", sysconf(_SC_NPROCESSORS_ONLN)); return 0;}原创 2011-07-20 17:29:53 · 1204 阅读 · 0 评论 -
避免僵尸进程
为了让更好理解此文中提到的方法,需要你知道僵尸进程是如何出现的。简单的了解可以阅读此文章《僵尸进程》。1、阻塞等待 让父进程主动调用waitpid进行等待是最朴素最直接的做法。当父进程由于功能要求不允许其阻塞等待时我们怎么办?最容易想到的答案是“线程”,原创 2011-08-08 12:26:04 · 2674 阅读 · 1 评论 -
ssh_exchange_identification: read: connection reset by peer
今天帮同事解决一个问题,问题是这样的:远程计算安装的是windows 2008的服务器,服务器上安装了vmware虚拟机,通过桥接方式虚拟的linux。linux上已经安装并启动了sshd服务,但是在本机使用ssh/sftp客户端都无法成功登录到虚拟的linux。ssh登录失败后显示的结果为是:ssh_exchange_identification: read: connection原创 2011-12-06 17:48:22 · 38856 阅读 · 1 评论 -
获取tcp/udp端口对应的进程pid
可能有一些朋友想要做一些监视流量工具却不知道如何根据端口获取到进程的PID,如果你搜了一圈也没有找到满意的答案,希望我的这个文章可以帮到你。1、获取当前活动的TCP/UDP端口值。你会有许多方法获取此值,这里不多废话了。(我用的方法是通过raw socket进行抓包分析,你也可以用libpcap库实现)。假设当前我发现一个本地端口为54351的tcp端口。当前状态:tcp_po原创 2011-11-29 11:45:15 · 19051 阅读 · 11 评论 -
什么是 initrd.img
对我个人而言,学习一个系统的最好的方法就是随着其启动运行的过程一点一点跟进(就好象看一个程序的源码要从main函数或者说从入口函数开始步步跟进)。当然具体的学习过程重点不是找到入口点就OK的。中间还有很多技巧,比如什么时候这个应该跳过一个实现什么时候应该跟进等。这个具体方法就一言难尽了,我也不再多少说了。不多说的两个简单原因:1、正如我开始说的,这个方法也许只适合我。 2、并不是本篇文章的重点。原创 2009-02-18 23:20:00 · 28294 阅读 · 15 评论 -
查看系统启动时间
date -d "`cut -d. -f1 /proc/uptime` second ago" +"%Y-%m-%d %H:%M:%S"原创 2012-11-20 10:19:10 · 1029 阅读 · 0 评论 -
使用man ascii查看ASCII表
在Linux下如果安装Manual手册,则可以直接使用man ascii查看ASCII表。ASCII(7) Linux Programmer's Manual ASCII(7)NAME asci原创 2013-01-11 12:10:16 · 10121 阅读 · 1 评论 -
获得本机IP地址列表
/* * main.c * ---------------------------------------------- * 2013-01-09 chrisniu1984@gmail.com * * [BUILD] * gcc -o main main.c -Wall * */#include #include #include // 系统定义的结构,贴在这里方便大原创 2013-01-09 11:17:55 · 1686 阅读 · 4 评论 -
LANG、LC_ALL、LANGUAGE等语言环境变量区别
locale命令可以打印当前语言环境变量,如下:LANG=en_US.UTF-8LANGUAGE=LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"原创 2012-08-07 18:10:57 · 7988 阅读 · 0 评论 -
关闭ubuntu apport
apport就是ubuntu上的"crash report"服务,就是当有程序崩溃时弹出的那个发送error report的程序:个人觉得此功能无用,本着给我的老本子节省资源的思想我决定关闭它。方法有几个:1、可以删除upstart的配置文件 /etc/init/apport.conf (记得备份)2、你可以修改 /etc/init/apport原创 2013-09-26 14:58:38 · 14610 阅读 · 0 评论 -
Linux下设置ICH7-M的磁盘控制器为AHCI模式
【声明】使用本文提供的方法设置ACHI而对硬件造成的损失,本人不承担任何责任!!(理论上是没什么问题的,还是声明下的好 :-|)================================================================================================================================原创 2013-04-03 12:18:16 · 5095 阅读 · 3 评论 -
终于知道mrproper什么意思了
[原文] http://www.cnblogs.com/laojie4321/archive/2012/04/11/2442921.htmlLinux下面去编译项目之前,一般常会用make mrproper去先删除之前编译所生成的文件和配置文件,备份文件等,其中,mrproper和distclean,clean之间的区别,Linux内核源码根目录下面的makefile中,有很清晰的解释转载 2015-03-06 23:40:55 · 2030 阅读 · 0 评论 -
ArchLinux下为macbookpro 11,1创建OSX-10.10的u盘安装环境
先简写一下,作为笔记,稍后整理:[NEED]tools: linux, dmg2img (AUR上有dmg2img)files: osx-10.10.dmgu盘:大于6G[STEP]1、准备u盘mkfs.hfsplus /dev/sdxy (sdx为u盘,sdxy为超过6G的分区)mount /dev/sdxy usb原创 2015-04-10 18:48:09 · 2227 阅读 · 1 评论 -
支持https的axel修改
支持https的axel,基于axel-2.4修改实现。 https://github.com/chrisniu1984/axels-2.4原创 2016-05-12 19:51:32 · 3610 阅读 · 0 评论 -
Linux下tmpfs与ramfs的区别
转自:http://www.linuxidc.com/Linux/2012-11/74356.htmramfs是Linux下一种基于RAM做存储的文件系统。在使用过程中你就可以把ramfs理解为在普通的HDD上建立了一个文件系统,而现在HDD被替换成了RAM,因为是RAM做存储所以会有很高的存储效率。由于ramfs的实现就相当于把RAM作为最后一层的存储,所以在ramfs中不会使用sw转载 2012-11-20 10:11:24 · 15794 阅读 · 0 评论 -
ubuntu为firefox安装java applets plugin
安装此包即可: icedtea6-plugin原创 2012-10-27 10:08:28 · 1680 阅读 · 0 评论 -
shell脚本字符串相关操作
判断读取字符串值表达式含义${var}变量var的值, 与$var相同 ${var-DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *${var:-DEFAULT}如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${转载 2012-11-02 11:28:30 · 1466 阅读 · 0 评论 -
使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符
我们经常会碰到需要fork子进程的情况,而且子进程很可能会继续exec新的程序。这就不得不提到子进程中无用文件描述符的问题!fork函数的使用本不是这里讨论的话题,但必须提一下的是:子进程以写时复制(COW,Copy-On-Write)方式获得父进程的数据空间、堆和栈副本,这其中也包括文件描述符。刚刚fork成功时,父子进程中相同的文件描述符指向系统文件表中的同一项(这也意味着他们共享原创 2011-12-09 10:23:42 · 21285 阅读 · 5 评论 -
VT100 控制符文档
转自: http://blog.youkuaiyun.com/kerlw/article/details/130952这个东西很好玩,你可以用这些东西来展现多彩世界。格式: echo "/033[字背景颜色;字体颜色m字符串/033[0m" (如果是在C程序中调用,就使用printf函数来打印这些控制符就可以了。)例如: echo "/033[41;36m something here转载 2012-01-18 09:49:35 · 4813 阅读 · 1 评论 -
查看和修改分区uuid
linux中的分区都使用uuid表示。 uuid是通过算法生成的一个格式如”2c07220f-8daa-463a-a4b1-ca4ae4941eff“的串。这个信息是存在分区中的。常见有一下两种方式查看:1、通过设备目录niu@niu:~/foss/linux/Documentation$ ls -l /dev/disk/by-uuid/total 0lrwxrwxr原创 2012-02-09 15:34:03 · 18568 阅读 · 1 评论 -
_gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
如果你的多线程程序出现如题的错误,然后直接 Aborted (core dumped) 掉,那么一定是由于你所使用的gnutls接口没有进行锁的初始化,在程序初始化时加入以下代码即可:#include static int mutex_init(void **mutex){ *mutex = malloc(sizeof(pthread_mutex_t)); pthre原创 2012-03-19 12:44:30 · 8126 阅读 · 0 评论