一、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是類似迅雷的多線程下載工具