Benjamin

静以修身,俭以养德,非澹薄无以明志,非宁静无以致远。
随笔 - 253, 文章 - 0, 评论 - 196, 引用 - 0
数据加载中……

linux---redhat开发整理(一)

一、ssh服务的开启:
首先用setup命令,打开System service菜单,看看有没有sshd,如果没有就要安装了,如果有按空格键选中它。
/etc/init.d/sshd status   查看状态       /etc/init.d/sshd start    开启  /etc/init.d/sshd stop  停止
vi /etc/ssh/sshd_config 找到#Port 22,标识默认使用22端口,修改为:Port 22XX (自己设定的端口)然后重启服务进程
查看/etc/ssh/sshd_config文件的PermitRootLogin值,如果是no,则需要修改为yes,并重启sshd服务,只有sshd服务开启才能用putty。

二、防火墙相关的命令:
在redhat下,需要在setup中打开fileware(防火墙)才可以使用以下命令切记(默认这个是不开启的)
关闭/etc/rc.d/init.d/iptables stop                            开启/etc/rc.d/init.d/iptables start

查看当前配置:iptables -L          关闭防火墙:chkconfig --level 2345 iptables off           service iptables stop
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT


三、FTP相关:在redhat5上,有gssftp和vsftp,gssftp是Redhat linux企业版自带的FTP工具。包含在/etc/xinetd/gssftp下。提供krb5验证机制。
vsftp也是FTP服务器软件,功能比gssftp完备。也是推荐使用的FTP服务器软件。它是独立守护程序。
vsftpd的rpm包在redhat的光盘上应该可以找到,用rpm -ivh来安装rpm包。
主要配置文件是:/etc/vsftpd/vsftpd
  /etc/vsftpd.ftpusers /etc/vsftpd.user_list 主要用于用户的访问控制。
  建议将userlist_deny=YES。更改完配置service vsftpd rest
vsftp连接时的"500 OOPS:cannot change directory:/root"错误,解决方法:
 sestatus -b | grep ftp      确切地说,只是查看了SELinux中ftp的状态。setsebool -P ftpd_disable_trans on      或者 setsebool -P ftp_home_dir on
重启vsftpd: service vsftpd restart

gssftp的路径:etc/xinetd.d/gssftp,将disable设置为no且server_args设置为 -l,即可
  启用。gssftp也是RedHat企业版自带的ftp工具。
  
  # default: off
  # description: The kerberized FTP server accepts FTP connections \
  #              that can be authenticated with Kerberos 5.
  service ftp
  {
          disable = no
          flags           = REUSE
          socket_type     = stream
          wait            = no
          user            = root
          server          = /usr/kerberos/sbin/ftpd
          server_args     = -l
          #server_args    = -l -a
          log_on_failure  += USERID
  }
  去掉-a的目的是因为好多ftp客户端不支持KRB5验证机制,disable=no开启,service xinetd restart
但是gssftp不够安全。

四、gcc的安装:有了下面的六个包,gcc-4.1.2才算安装完成,最好按照下面的顺序来安装。
rpm -ivh cpp-4.1.2-42.el5.i386.rpm 
rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm 
rpm -ivh glibc-headers-2.5-24.i386.rpm
rpm -ivh glibc-devel-2.5-24.i386.rpm
rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
rpm -ivh gcc-4.1.2-42.el5.i386.rpm
rpm -ihv libstdc++-devel-4.1.2-42.el5.i386.rpm
rpm -ihv gcc-c++-4.1.2-42.el5.i386.rpm
如果已经安装了,但是没有成功,建议用rpm的强制命令,在上述命令后面加上参数--force --nodeps卸载用rpm -e *.rpm;
上面的7个包,在Redhat5上是可以找到,在Redhat4上能找到几个就装几个,我在Redhat4上只找到了6个,Redhat5上面7包都有,
安装时如果加了--force --nodeps,则顺序无所谓。

gcc下使用masm=intel,出现的还是AT&T的汇编代码,就是gcc安装不完整,最好重新安装一遍gcc。

五、rpm相关:
rpm是Red Hat针对自己的系统提出了一个 较好的办法来管理成千上百的软件。在系统中安装了rpm管理系统
以后,只要是符合rpm文件标准的打包的程式都能方便的安装,升级,卸载 ,因此非常多linux都使用rpm系统。
由于rpm的源程式能在别的系统上进行编译, 所以有可能在别的系统上也使用rpm 。

rpm包的文件名中包含了这个软件包的版本信息,操作系统信息,硬件需求等等。
比如mypackage-1.1-2TL.i386.rpm,其中mypackage是在系统中登记的软件包的名字
1.1是软件的版本号,2是发行号,TL表示用于TL操作系统,还可能是RH等。i386表示
用于intel x86平台,还可能是sparc等

查看是否安装了rpm包,用rpm -qa|grep rpm包名,或者rpm -qa;
rpm-V命令用来验证一个软件包 ,rpm -Va(v是大写) 验证所有已安装的软件包,可以显示已删除的文件信息;
rpm -qf 文件名,显示文件属于那个rpm包;i 表示info,获得软件包的信息;l 表示list,获得文件列表;a 表示all,在所有包中执行查询;
f 表示file,根据文件进行相关的查询; p 表示package,根据软件包进行查询

rpm -Vf 文件名,显示rpm包中所有关于文件名的信息;
如果新的 RPM,但不知道它是做什么的,可以键入如下命令:rpm -qip koules-1.2-2.i386.rpm ,获取关于一个软件包的版本,用途等相关信息;
rpm -qlp .rpm,显示rpm包在系统里安装了什么文件;rpm -ql 包名,可以知道rpm包中的文件安装到那里去;
不安装不过获取rpm包中的文件用用工具rpm2cpio和cpio
rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories
参数i和extract相同,表示提取文件。v表示指示执行进程 d和make-directory相同,表示根据包中文件原来的路径建立目录 m表示保持文件的更新时间。


安装.src.rpm软件包的方法:这类软件包是包含了原始码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:
方法一:
1.执行rpm -i your-package.src.rpm
2. cd /usr/src/redhat/SPECS
3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件
4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录
5. ./configure 这一步和编译普通的源码软件相同,能加上参数
6. make
7. make install
方法二:
1.执行rpm -i you-package.src.rpm
2. cd /usr/src/redhat/SPECS
3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件
这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等)
在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。 执行rpm -i new-package.rpm即可安装完成。

六、gdb7.2的编译,目前gdb7.2尚未有rpm包,只有tar包,解压缩,到压缩目录下执行./configure ;mke;make install
cofigure无须参数,make时可能发生如下的错误提示和解决方法
错误提示no termcap library found,解决方法如下:
[root@localhost /]# rpm -qa |grep ncurses
ncurses-5.5-24.20060715
ncurses-devel-5.5-24.20060715
对应的rpm为ncurses-5.5-24.20060715.i386和ncurses-devel-5.5-24.20060715.i386,可以在系统盘上的Server目录下可以找到。
然后在重新configure、make、make install。
安装好的gdb7.2后,打开gdb的界面如下
[root@localhost /]# gdb
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb)
上面的这个编译问题在AMD的平台上出现的频率大些
在编译器要确保安装 ncurses和flex,如果都安装了,还是在make时报错误,建议将定义编译路径和将路径加到环境变量中去,如:
export PATH=$PATH:/usr/local/gdb7.2/bin
./configure --prefix=/usr/local/gdb7.2(如果是全新安装,不用设置路径,直接configure就可以)
make
make install

gdb7.2安装时出现错误:/usr/bin/install: cannot stat `libinproctrace.so': No such file or directory
解决方法:进入到gdb/gdbserver/Makefile,找到 if [ x$IPA_DEPFILES != x ]; then \
将其改为if [ x${IPA_DEPFILES} != x ]; then \或if [ x"$(IPA_DEPFILES)" != x ]; then \
然后重新make install即可,也可以修改Makefile.in,修改方法和上面的一样,重新make、make install
安装完后,如果gdb的版本不是7.2的,重启一次系统就可以,这样的编译错误一般出现在新装系统中。

一般在gdb中查看STL,会出现以下信息One of the arguments you tried to pass to operator [ ] could not be converted to what the function wants.
如果gdb要在调试中查看STL,必须下个脚本, http://sourceware.org/gdb/wiki/STLSupport?action=AttachFile&do=view&target=stl-views-1.0.3.gdb
下载后将文件保持在用户(如root)目录,命名为.gdbinit,如果还是不能查看,则可以打开gdb,source gdbinit文件即可。
查看时使用pvector, plist, pmap, pset, pdequeue, pstack, pqueue, ppqueue, pbitset, pstring, pwstring 命令

如果想在如何目录下用gdb命令,必须将:/usr/local/gdb7.2/bin加到环境变量中去
export PATH=$PATH:/usr/local/gdb7.2/bin只是临时环境变量,当次登陆有用,机器重启或下次登陆就不起作用

永久环境变量的用法:vi /etc/profile
在里面加入:
export PATH=$PATH:/usr/local/gdb7.2/bin,这个对所有的用户都有效
或者在每个用户下的.bashrc
文件中加入export PATH=$PATH:/usr/local/gdb7.2/bin,但是这两种重启或注销才起作用

七、linux下c检查内存泄漏的简单方法
先#include <mcheck.h>
在需要检查内存泄漏的代码开始处加入
mtrace();
在需要检查内存泄漏的代码结束处加入
muntrace();
修改完成。
在bash中,设置环境变量MALLOC_TRACE,例如:
export MALLOC_TRACE=/tmp/mtrace
然后执行你的程序。
mtrace a.out /tmp/mtrace (mtrace 程序的目标文件 $MALLOC_TRACE)

Memory not freed:

-----------------

Address Size Caller

0x09b08378 0xa at /XXX/a.c:6

0x09b08388 0x10 at /XXX/a.c:7

可以看到,会显示未释放动态空间的代码具体位置
如果mtrace不可用安装glibc-utils的安装包,要和libc的版本号一样(通过rpm -q glibc来获取glibc的版本号).
安装glibc-utils,需要安装gd、libXpm两个依赖包。这三者的版本号不一定都一致
gd-2.0.5-11.e16.x86-64.rpm
glibc-utils-2.12-1.32.e16.x86-64.rpm
libXpm-3.5.10-2.e16.x86-64.rpm
建议用yum install  glibc-utils来安装(对于redhat或cenos)

这个方法如今不是很有效,建议大家还是用Valgrind 。
www.valgrind.org下载最新版,解压缩tar –jxvf valgrind-3.2.3.tar.bz2
切到解压缩路径cd valgrind-3.2.3 ./configure、 Make;make install
我们就要用如下方法调用: #valgrind --leak-check=full --show-reachable=yes --trace-children= yes   ./a.out
a.out是可执行文件。主要参数说明:
 --log-fd=N 默认情况下,输出信息是到标准错误stderr,也可以通过—log-fd=8,输出到描述符为8的文件

          --log-file=filename将输出的信息写入到filename.PID的文件里,PID是运行程序的进行ID。可以通过--log-file exactly=filename指定就输出到filename文件。

          --log-file-qualifier=<VAR>,取得环境变量的值来做为输出信息的文件名。如—log-file-qualifier=$FILENAME。

          --log-socket=IP:PORT 也可以把输出信息发送到网络中指定的IP:PORT去

          --error-limit=no 对错误报告的个数据进行限制,默认情况不做限制

          --tool=<toolname> [default: memcheck]

--tool=memcheck:要求用memcheck这个工具对程序进行分析

     --leak-ckeck=yes 要求对leak给出详细信息

     --trace-children=<yes|no> [default: no]跟踪到子进程里去,默认请况不跟踪

     --xml=<yes|no> [default: no]将信息以xml格式输出,只有memcheck可用

     --gen-suppressions=<yes|no|all> [default: no]如果为yes,valgrind会在每发现一个错误便停下让用户做选择是继续还是退

更多选项请参看: http://www.valgrind.org/docs/manual/manual-core.html可以把一些默认选项编辑在 ~/.valgrindrc文件里。

这里使用valgrind的memcheck和callgrind两个工具的用法,其实valgrind还有几个工具:“cachegrind”,用于检查缓存使用的;“helgrind”用于检测多线程竞争资源的,等等。



八、bind9的安装编译,和大部分的linux上的安装程序一样,也是configure、make、make install,不过要注意
configure的参数--prefix=/usr/local/bind  --enable-threads --without-openssl,prefix是路径。
通过dig命令直接生成named.root---------------cd /usr/local/bind/var;dig @a.root-servers.net . ns>named.root
判断bind是否在chroot下工作:
找named对应的进行id号
# ps -fCnamed
UID        PID  PPID  C STIME TTY          TIME CMD
named     1729     1  0 Nov27 ?        00:00:04 /usr/sbin/named -u named -t /var/named/chroot
相应的id的root
# ls -l /proc/1729/root
lrwxrwxrwx  1 named named 0 Nov 29 10:21 /proc/1729/root -> /var/named/chroot
# ls -l /proc/1729/root/
total 24
drwxr-xr--    2 root named 4096 Nov  1 05:30 dev
drwxr-x---    2 root named 4096 Nov  1 05:30 etc
dr-xr-xr-x  157 root root     0 Nov 27 07:32 proc
drwxr-x---    5 root named 4096 Nov  1 05:30 var
看到没有,bind9的chroot是/var/named/chroot,它的root下面有dev etc prov var这些常用的,很熟悉的
目录。。。
# lsof -p 1729
COMMAND  PID  USER   FD   TYPE     DEVICE    SIZE    NODE NAME
named   1729 named  cwd    DIR        8,5    4096 2916360 /var/named/chroot/var/named
named   1729 named  rtd    DIR        8,5    4096 2916356 /var/named/chroot
named   1729 named  txt    REG        8,2  287084  764733 /usr/sbin/named
named   1729 named  mem    REG        8,2   97120 1192403 /lib/libnsl-2.3.4.so
named   1729 named  mem    REG        8,2  107800 1192395 /lib/tls/libpthread-2.3.4.so
named   1729 named  mem    REG        8,2   82944  764756 /usr/lib/libgssapi_krb5.so.2.2
named   1729 named  mem    REG        8,2   63624  764741 /usr/lib/libz.so.1.2.1.2
named   1729 named  mem    REG        8,2    7004 1192400 /lib/libcom_err.so.2.1
named   1729 named  mem    REG        8,2   81120 1192397 /lib/libresolv-2.3.4.so
named   1729 named  mem    REG        8,2   47404 1191410 /lib/libnss_files-2.3.4.so
named   1729 named  mem    REG        8,2   16732 1192394 /lib/libdl-2.3.4.so
named   1729 named  mem    REG        8,2   25460  758093 /usr/lib/libisccc.so.0.1.0
named   1729 named  mem    REG        8,2 1529008 1192392 /lib/tls/libc-2.3.4.so
named   1729 named  mem    REG        8,2   57252  758097 /usr/lib/libisccfg.so.0.0.11
named   1729 named  mem    REG        8,2   59684  758101 /usr/lib/liblwres.so.1.1.2
named   1729 named  mem    REG        8,2  941024 1192401 /lib/libcrypto.so.0.9.7a
named   1729 named  mem    REG        8,2  112168 1192347 /lib/ld-2.3.4.so
named   1729 named  mem    REG        8,2  415188  764755 /usr/lib/libkrb5.so.3.2
named   1729 named  mem    REG        8,2  136016  761815 /usr/lib/libk5crypto.so.3.0
named   1729 named  mem    REG        8,2 1055504  758085 /usr/lib/libdns.so.16.0.0
named   1729 named  mem    REG        8,2  224764  758089 /usr/lib/libisc.so.7.1.5
named   1729 named    0u   CHR        1,3            2494 /dev/null
named   1729 named    1u   CHR        1,3            2494 /dev/null
named   1729 named    2u   CHR        1,3            2494 /dev/null
named   1729 named    3u  unix 0xec796880          313580 socket
named   1729 named    4u   CHR        1,3            2494 /dev/null
named   1729 named    5r  FIFO        0,7          313587 pipe
named   1729 named    7w  FIFO        0,7          313587 pipe
named   1729 named    8r   CHR        1,8         2916369 /var/named/chroot/dev/random
named   1729 named   20u  IPv4     313593             UDP localhost.localdomain:domain
named   1729 named   21u  IPv4     313594             TCP localhost.localdomain:domain (LISTEN)
named   1729 named   22u  IPv4     313595             UDP mail.xxxer.com:domain
named   1729 named   23u  IPv4     313596             TCP mail.xxxer.com:domain (LISTEN)
named   1729 named   24u  IPv4     313597             UDP *:32964
named   1729 named   25u  IPv6     313598             UDP *:32965
named   1729 named   26u  IPv4     313599             TCP localhost.localdomain:rndc (LISTEN)
对比一下ldd的结果:
#ldd /usr/sbin/named
        liblwres.so.1 => /usr/lib/liblwres.so.1 (0x00da7000)
        libdns.so.16 => /usr/lib/libdns.so.16 (0x00846000)
        libisccfg.so.0 => /usr/lib/libisccfg.so.0 (0x00cee000)
        libcrypto.so.4 => /lib/libcrypto.so.4 (0x00230000)
        libisccc.so.0 => /usr/lib/libisccc.so.0 (0x00726000)
        libisc.so.7 => /usr/lib/libisc.so.7 (0x00c66000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00324000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00f19000)
        libc.so.6 => /lib/tls/libc.so.6 (0x0033a000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x001b0000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00111000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00bb7000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00d6f000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x005ab000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c44000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00176000)
        /lib/ld-linux.so.2 (0x00498000)
 
然后再strace -f /usr/sbin/named 看看,,

九、通过core文件找到程序崩溃的地方
gdb exe文件路径 core文件路径(都要绝对路径)
然后直接run;如果在gdb的调试过程中出现了core文件,可以直接敲bt,如果还看不到,在敲where,有时只能看到函数,至于是哪一行
要我们自己去定位;

十、查看当前操作系统内核信息:uname -a 
        查看当前操作系统发行版信息:cat /etc/issue
        查看cpu型号:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
        查看物理cpu颗数:cat /proc/cpuinfo | grep physical | uniq -c
        查看cpu运行模式: getconf LONG_BIT   结果是32表示运行在32模式下
        查看cpu是否支持64bit:cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l  结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit        
        查看cpu信息概要:lscpu或者cat /proc/cpuinfo


    # head -n 1 /etc/issue   # 查看操作系统版本
     # cat /proc/cpuinfo      # 查看CPU信息    
     # hostname               # 查看计算机名
     # lspci -tv              # 列出所有PCI设备
     # lsusb -tv              # 列出所有USB设备
     # lsmod                  # 列出加载的内核模块
     # env                    # 查看环境变量
     # free -m                # 查看内存使用量和交换区使用量
     # df -h                  # 查看各分区使用情况
     # du -sh <目录名>        # 查看指定目录的大小
     # grep MemTotal /proc/meminfo   # 查看内存总量
     # grep MemFree /proc/meminfo    # 查看空闲内存量
     # uptime                 # 查看系统运行时间、用户数、负载
     # cat /proc/loadavg      # 查看系统负载

     # mount | column -t      # 查看挂接的分区状态
     # fdisk -l               # 查看所有分区
     # swapon -s              # 查看所有交换分区
     # hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
     # dmesg | grep IDE       # 查看启动时IDE设备检测状况
     # ifconfig               # 查看所有网络接口的属性
     # iptables -L            # 查看防火墙设置
     # route -n               # 查看路由表
     # netstat -lntp          # 查看所有监听端口
     # netstat -antp          # 查看所有已经建立的连接
     # netstat -s             # 查看网络统计信息
     
     # ps -ef                 # 查看所有进程
     # top                    # 实时显示进程状态
     
     # chkconfig --list       # 列出所有系统服务
     # chkconfig --list | grep on    # 列出所有启动的系统服务
 
     # rpm -qa                # 查看所有安装的软件包
 
     # w # 查看活动用户      # id <用户名> # 查看指定用户信息      # last # 查看用户登录日志      # cut -d: -f1 /etc/passwd # 查看系统所有用户      # cut -d: -f1 /etc/group # 查看系统所有组      # crontab -l # 查看当前用户的计划任务








十一、其他:
让程序在后台运行的命令:nohup忽略 hangup 信号(当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程),执行此命令会在屏幕上打印出pid,命令格式nohup 应用程序路径&;setsid使进程成为不接受 HUP 信号的终端的进程,用法setsid 应用程序路径;(应用程序&)可以使进程不在当前终端上,所以同样不收hup信号的干扰;
disown [-ar] [-h] [jobspec ...]适用于已经执行的程序,用disown -h jobspec 来使某个作业忽略HUP信号;用disown -ah 来使所有的作业都忽略HUP信号;用disown -rh 来使正在运行的作业忽略HUP信号,用过 disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它。操作对象是作业,在运行命令时在结尾加了"&"来使它成为一个作业并在后台运行,可通过jobs命令来得到所有作业的列表,如果并没有把当前命令作为作业来运行,用CTRL-z(将当前进程挂起)才能得到它的作业号,再用bg jobspec 来将它放入后台并继续运行;

时间同步: ntpdate 域名或Ip都可以
时间设置:date --set “07/07/06 10:19" (月/日/年时:分:秒)


/etc/init.d/nscd restart      //清除DNS缓存

软链接:ln -s source dist  这个命令相当dist是source的快捷方式,一般source要使用绝对路径。
硬链接:ln source dist 相当于dest是source的一个镜像或拷贝

远程拷贝:scp -P 端口 用户名@ip:文件绝对路径(远端) 目标路径(本地);如果是文件夹,加上-r参数,-p和-r都是可选的参数
远程上传: 命令比类似,不同的是本地文件路径在前,远端路径在后



进程信息查看命令:
所打开的文件
获取方法1:
# ls -l /proc/$PID/fd/

获取方法2:
# lsof -p $PID

内存分配表
获取方法:
# lcat /proc/$PID/maps

堆栈
获取方法:
# pstack $PID

所发出的系统调用
获取方法:
# strace -p $PID

所发出的库函数调用
获取方法:
# ltrace -p $PID

进程继承关系
获取方法:
ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest

运行时dumpcore
获取方法:
# gcore $PID 

让程序后台启动:
1、如果程序或命令没有输出到屏幕,用 “命令 &”,如果用(命令 &),则进程无法通过jobs来查看,必须用ps -ef|grep,也可以躲过HUP信号;
2、nohup :nohup 的用途就是让提交的命令忽略 hangup 信号,如果有输出,而在命令的最后加上&;
(当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程),
3、setsid :可使进程不接收hangup,使用方法:setsid + 程序的启动命令
4、disown:disown -h jobspec 来使某个作业忽略HUP信号;disown -ah 来使所有的作业都忽略HUP信号;
 disown -rh 来使正在运行的作业忽略HUP信号。 使用此命令后须用ps -ef来查找;一般的使用方法是在这个命令后加&
5、screen:提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。
screen -dmS session name 来建立一个处于断开模式下的会话(并指定其会话名);screen -list 来列出所有会话。
screen -r session name 来重新连接指定会话。 用快捷键CTRL-a d 来暂时断开当前会话。

 

history:查看操作系统上的(命令的)历史记录,需要记住的是这里查看的只是登录终端的记录,并非所有终端的记录;
HISTTIMEFORMAT='%F %T: ';history,可在查看历史记录同时查看操作时间 


vim在redhat上面的安装:
 wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
./configure --prefix=/usr/local --enable-multibyte --with-features=big --disable-selinux 
make;make install
安装首先要安装ncurses-devel-5.5-24.20060715.x86_64.rpm
否则无法安装成功

axel是类似迅雷的多线程下载工具

posted on 2010-09-02 22:34 Benjamin 阅读(3850) 评论(0)  编辑 收藏 引用 所属分类: linux


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理