----------------------------程序开发篇--------------------------

3001 linux下调试core文件(bjchenxu)

gdb <progname> <core>

<progname>:出错产生core dump的可执行程序。

<core>: core dump的文件名,缺省是“core”


3002 gcc abc.c得到的a.out不能运行(bjchenxu)

./a.out


3003 c++ 编译时为什么出错信息说cout没定义(bjchenxu)

include头文件完后加入 using namespace std;


3004 新编译生成的gcc ,使用的标准连接库都在/usr/local/lib 下了,但使用的缺省的连接路径是 /usr/lib 怎样添加?(除了在每次编译时 增加 -L /usr/local/lib 以外)(sakulagi, hutuworm)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

写到~/.bash_profile里面。

增加一种简便办法:

将/usr/local/lib加入/etc/ld.so.conf,然后运行一次ldconfig


3005 RH9下GCC的安装(一起走过的日子,hutuworm)

三种方法选一:

(1)利用CD上rpm安装

CD-1:compat-gcc-7.3-2.96.118.i386.rpm

CD-1:compat-gcc-c++-7.3-2.96.118.i386.rpm

CD-1:libgcc-3.2.2-5.i386.rpm

CD-2:compat-gcc-g77-7.3-2.96.118.i386.rpm

CD-2:compat-gcc-java-7.3-2.96.118.i386.rpm

CD-2:compat-gcc-objc-7.3-2.96.118.i386.rpm

CD-2:gcc-3.2.2-5.i386.rpm

CD-2:gcc-c++-3.2.2-5.i386.rpm

CD-2:gcc-g77-3.2.2-5.i386.rpm

CD-2:gcc-gnat-3.2.2-5.i386.rpm

CD-2:gcc-java-3.2.2-5.i386.rpm

CD-2:gcc-objc-3.2.2-5.i386.rpm

比如碰到系统提示:

warning : gcc-3.2.2-5.i386.rpm : V3 DSA signature :MOKEY key ID db42a60e

error : Failed dependencies :

binutils >=2.13.90.0.18-9 is needed by gcc-3.2.2-5

glibc-devel >=2.3.2-11.9 is needed by gcc-3.2.2-5...

就先安裝glibc-devel包,依此类推

(2)更好的方法就是在X-window下选“主菜单”──>“系统设置”──>“添加/删除应用程序”──>“开发工具”中的gcc并安装它

(3) up2date gcc便可自动解决dependency问题


3006 shell脚本为何无法运行(GOD_Father)

第一,脚本权限要为可执行 #chmod +x test.sh

第二,脚本所在的目录在环境变量PATH中,或者直接执行 #./test.sh


3007 查看某个文件被哪些进程在读写(bjweiqiong)

lsof 文件名


3008  查看某个进程打开了哪些文件(bjweiqiong)

lsof –c 进程名

lsof –p 进程号


3009  lsof是什么意思(bjweiqiong)

list open files


3010 lsof用法小全(bjweiqiong)

lsof abc.txt 显示开启文件abc.txt的进程

lsof -i :22 知道22端口现在运行什么程序

lsof -c nsd 显示nsd进程现在打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4  显示使用fd为4的进程

lsof -i 用以显示符合条件的进程情况

语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

46 --> IPv4 or IPv6

protocol --> TCP or UDP

hostname --> Internet host name

hostaddr --> IPv4位置

service --> /etc/service中的 service name (可以不只一個)

port --> 埠號 (可以不只一個)

例子: TCP:25 - TCP and port 25

@1.2.3.4 - Internet IPv4 host address 1.2.3.4

​tcp@ohaha.ks.edu.tw​​:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp

lsof -n 不将IP转换为hostname,预设是不加上-n参数

例子: lsof -i ​​tcp@ohaha.ks.edu.tw​​:ftp -n

lsof -p 12  看进程号为12的进程打开了哪些文件   

lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新

-r,lsof会永远不断的执行,直到收到中断讯号

+r,lsof会一直执行,直到没有档案被显示

例子:不断查看目前ftp连接的情况:lsof -i ​​tcp@ohaha.ks.edu.tw​​:ftp -r

lsof -s 列出打开文件的大小,如果没有大小,则留下空白

lsof -u username  以UID,列出打开的文件