++如何查找大小為500K到1000K之間的文件
find / -type f -size +500k -and -size -1000k
++僅列出當前目錄下的文件名.
find ./ -type f -maxdepth 1 -exec basename {} /;
++讓主機不響應ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
若想恢復就用
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#必須是用命令改,不能是vi修改
++自動注銷ROOT
編輯你的配置文件”vi /etc/profile”,在”HISTSIZE=”后面加入下面這行:
TMOUT=300
#300,表示300秒
++ls只列出目錄
ls -lF | grep ^d
ls -lF | grep /$
ls -F | grep /$
++讓cron任務不回饋信息
* * * * * cmd > /dev/null 2>&1
++lsof(list open files)用法
lsof -i :xx
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/ 同上,但是會搜索目錄下的目錄,時間較長
++改變sshd 的端口
在/etc/ssh/sshd_config 中加入一行:Port 2222,/etc/init.d/sshd restart 重啟守護進程
++防止任何人使用su 命令成為root
vi /etc/pam.d/su,在開頭添加下面兩行:
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so group=wheel
然后把用戶添加到“wheel”組:chmod -G10 username
++如何讓ssh 只允許指定的用戶登錄
方法1:在/etc/pam.d/sshd 文件中加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
然后在/etc 下建立sshusers 文件,加入允許使用ssh 服務的用戶名(每一個用戶名都要單獨一行),重新起動sshd
++利用ssh 復制文件
1、從A 復制B(推過去) #scp -rp /path/filename username@remoteIP:/path
2、從B 復制到A(拉過來)#scp -rp username@remoteIP:/path/filename /path
++linux機器掛載windows上的共享文件
windows IP:192.168.1.1
mount -t smbfs -o username=massky,password=massky //192.168.1.1/dbf /mnt/share
如想機器重啟自動掛載,vi /etc/fstab最后加入:
//192.168.1.1/dbf /mnt/share smbfs defaults,auto,username=massky,password=massky 0 0
++定制linux 提示符
在bash 中提示符是通過一個環境變量$PS1 指定的。用export $PS1 查看現在的值,比較直
觀常用的提示符可以設定為export PS1=“[/u@/h /W]/$”。其中/u 代表用戶名,/h 代表主機
名,/W 代表當前工作目錄的最后一層,如果是普通用戶/$則顯示$,root 用戶顯示#。
++清空文件
[echo] > 文件名
++DNS相關
host -a domain.com #顯示相關資訊都列出來
host domain.com 202.106.0.20 #用202.106.0.20這臺DNS服務器查詢domain.com
++前后臺任務相關
jobs 列出屬于當前用戶的進程
bg 將進程搬到后臺運行(Background)
fg 將進程搬到前臺運行(Foreground)
萬一你運行程序時忘記使用“&”了,又不想重新執行。可以先使用ctrl+z掛起程序,然后敲入bg命令,這樣程序就在后臺繼續運行了。
++查找當前目錄下七天前的文件,并刪除
find ./ -mtime +7 -type f -exec rm {} /;
++產生指定大小的文件(bs*count)
dd if=/dev/zero of=filename bs=1G count=8
dd if=/dev/zero of=filename bs=2000 seek=4096k count=1 #更快
++查找當前目錄下文件并更改擴展名
更改所有.ss文件為.aa
# find ./ -name “*.ss” -exec rename .ss .aa ‘{}’ /;
++默認find全處理當前目錄下所有文件和目錄,有的時候不希望處理多層目錄
find ./ -maxdepth 1 #處理一層目錄,另有參數-mindepth LEVELS
++修改系統時間
date -s “2005-6-4 17:26″
++顯示特殊日期
date -d “1 days ago” +%Y%m%d #這個” 1 days ago”可換成任意天前
date -d “last sunday” +%Y-%m-%d #顯示上周日日期 ,sunday可換成其它星期,month,year.++命令編組,將幾條命令的輸出就指向同一個文件
( ls ; pwd ; date) > output file++命令的有條件執行
cat 22 && ls -l #如果cat 22成功執行,就執行&&后面的命令
cat 22 || ls -l #如果cat 22不成功執行,就執行||后面的命令++讓服務器自動同步時間
0 1 * * * /usr/sbin/ntpdate 210.72.145.44
或 0 1 * * * rdate -s time.nist.gov++解決打開文件過多的問題
在etc/security/limits.conf 配置文件中設置進程文件描述符極限:
* soft nofile 2048
* hard nofile 4096
系統級文件描述符極限及timeout時間修改,添加如下兩行到 /etc/rc.d/rc.local 啟動腳本中:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
#一般情況下,最大打開文件數比較合理的設置為每4M物理內存256,比如1G內存可以設為65536,
#而最大的使用的i節點的數目應該是最大打開文件數目的3倍到4倍
++如何用tar打包一個目錄時,去掉其中的某些子目錄或指定文件
加參數 –exclude 即可, 可加文件名或目錄名, 可多寫
tar cvf –exclude {dirname,filename} #dirname不要加/
++終端下修改服務器時區
/usr/sbin/timeconfig
或直接#/etc/sysconfig/clock
++關閉啟動時的內存不足256M提示
#vi /etc/rc.sysinit #把最后六行注釋掉
或#vi /var/lib/supportinfo
把其中的 MinRAM: 256M 這個值調低點.
++在多層目錄中查找到某一指定”字符串”
grep string -R /etc/sysconfig/
find ./pathname/ -name ‘*’ | xargs grep ’string’
++占用CPU的一個命令
#yes string #有時候測試用得上。狂占CPU
++Kill相關
kill -STOP [pid]
發送SIGSTOP (17,19,23)停止一個進程,而并不消滅這個進程。
kill -CONT [pid]
發送SIGCONT (19,18,25)重新開始一個停止的進程。
kill -KILL [pid]
發送SIGKILL (9)強迫進程立即停止,并且不實施清理操作。
kill -9 -1
終止你擁有的全部進程。
++在當前目錄下建個bak目錄,然后 cp * bak,會提示略過bak,有其它辦法可以排除指定文件(夾)?
ls -F|grep -v //|xargs -i cp {} bak #推薦
或 find ! -name “./bak”
++ 根據進程名顯示進程號
# pidof httpd
1846 1845 1844 1843 1842 1841 1840 1839 1820
++e2fsck
檢查使用 Linux ext2 檔案系統的 partition 是否正常工作, 檢查 /dev/hda5 是否正常,如果有異常便自動修復,并且設定若有問答,均回答[是] :
e2fsck -a -y /dev/hda5
++反向輸出
rev 反向輸出(以行為單位)
tac 反向輸出(全文)
++顯示終端號
tty
++文件行數/字數統計
wc –l file 計算文件行數
wc -w file 計算文件中的單詞數
wc -c file 計算文件中的字符數
++出每行第5個到第9個字符
cut -b5-9 file.txt
++刪除文本文件中出現的行列
uniq
++返回文件所在路徑
dirname /bin/tux #將返回 /bin
++fcitx在英文環境下正常使用
#vi ~/.bashrc
xport LC_CTYPE=”zh_CN.UTF-8″
export XMODIFIERS=”@im=fcitx”
export XIM=fcitx
export XIM_PROGRAM=fcitx
#gnome-session-properties可以把fctix加入登入后自啟動
++split分割合并文件
split -b1440k a_whopping_big_file chunk #拆
cat chunk* > a_whopping_big_file #合
++利用現存兩個文件,生成一個新的文件
#取出兩個文件的并集(重復的行只保留一份)
cat file1 file2 | sort | uniq
#取出兩個文件的交集(只留下同時存在于兩個文件中的文件)
cat file1 file2 | sort | uniq -d
#刪除交集,留下其他的行
cat file1 file2 | sort | uniq -u
++生成kill -9 httpd進程的命令
ps aux|grep httpd|awk ‘{print “kill -9 ” $2}’
++查看即時網絡流量
數據包 “netstat 1″一秒鐘累計一次,”netstat 2″兩秒鐘累計一次。依此類推
查看網卡流量:”systat -if 1″每秒鐘刷新一次,”systat -if 2″兩秒鐘刷新一次,依此類推. #freebsd
++硬盤對拷
dd if=/dev/src of=/dev/dst bs=131072
++用wget下載FTP整個目錄
wget -mcnH ftp://hostname/dirname –ftp-user=user –ftp-password=password –no-passive-ftp -o /tmp/down/down.log
++統計某列數值的平均值
例: grep Total: squid.log |awk ‘{print $2}’ |awk ‘{sum+=$0}END{print sum/NR}’
++如何釋放出.tar.gz中指定文件/文件夾?
tar zxvf *.tar.gz [$path/filename] [$path/dirname]
如果不加path的話,會直接釋放到當前目錄,加path會保留原有目錄結構
++指定發件人來發送郵件
cat local-host-names sendmail -v -Cetcmailsendmail.cf -f Sender@domain.com -oi To i@zhangjianfeng.com
++單獨取出apache日志中2007.1.24的18:00~23:00的日志
sed -n ‘//[24//Jan//2007/:18/,//[24//Jan//2007/:23/p’ access_log > tmp.log
++/proc/sys/fs/優化
1)/proc/sys/fs/file-max
該文件指定了可以分配的文件句柄的最大數目。如果用戶得到的錯誤消息聲明由于打開文件數已經達到了最大值,從而他們不能打開更多文件,則可能需要增加該值。
4096(缺省)/65536(建議)
echo 65536 > /proc/sys/fs/file-max
2)/proc/sys/fs/file-nr #該文件與 file-max 相關,它只依次顯示:已分配文件句柄的數目、已使用文件句柄的數目、文件句柄的最大數目
++查看可裝載的編碼
locale -a
+多CPU(雙核含)查看各CPU狀態的方法
在top環境下按數字1
++在Linux下如何查看每個文件系統的塊大小
tune2fs -l /dev/sdb1 | grep Block
++如何用iptables開放一段端口?
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 60001:60006 -j ACCEPT
++更改文件的最后保存時間
touch -t 200504301100 filename #具體參數見–help
++如何查看歷史命令的執行時間
HISTTIMEFORMAT=” %D %T ” history #bash 3 +
++查看raid信息
cat /etc/raidtab,如果有信息就可以用命令 lsraid -a /dev/md0 查看詳細內容,包括各盤的狀態等
++取出最后10條命令,并去掉編號
fc -n -l -10 # -10也可以換成一個范圍 1 10 之類
++暫時關閉某別名
/程序名 如/rm
++取出文章中所有單詞,并排序 #最近一段背單詞用
for i in $(< 01.txt ); do echo “$i”; done|sed -e ‘y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/’ |grep ^[a-z] |awk -F[,/’] ‘{print $1}’ | sort|uniq
++歷史紀錄相關命令
history #顯示歷史命令記錄
fc #從歷史清單中選擇命令
fc -ln 1000 1020 #顯示1000-1020范圍內的命令,n為不顯示編號
fc -l -3 #顯示最后3條命令
++sort相關
-u 刪除所有復制行
-b 使用域進行分類時,忽略第一個空格
-t 域分隔符;用非空格或t a b鍵分隔域
-r 對分類次序或比較求逆
-k, –key=POS1[,POS2] start a key at POS1, end it at POS 2 (origin 1)
-f, –ignore-case fold lower case to upper case characters
++tr相關
cat myfile |tr -s “[/n]” #清除空行
cat myfile |tr “[a-z] “[A-Z]” #將所有小寫轉成大寫
++ps結果相關說明
VSZ: 占用的虛擬記憶體大小 RSS: 占用的記憶體大小
STAT: 該行程的狀態:
D: 不可中斷的靜止 (進行 I/O 動作) R: 正在執行中 S: 靜止狀態
T: 暫停執行 Z: 不存在但暫時無法消除 W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程 N: 低優先序的行程 L: 有記憶體分頁分配并鎖在記憶體內 (實時系統)
++netstat -an相關tcp狀態
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
++節點使用情況
df -i
++相關參數修改
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #開啟/關閉響應廣播
/proc/sys/net/ipv4/ip_forward #開啟轉發,做NAT需要
/proc/sys/net/ipv4/ip_local_port_range #向外發起tcp或udp連接請求時使用的端口范圍
/proc/sys/kernel/ctrl-alt-del #0-有效, 1-無效
proc/sys/kernel/msgmax #一個進程發送到另一個進程的消息的最大長度(bytes)
/proc/sys/kernel/msgmnb #該文件指定一個消息隊列的最大長度(bytes)
/proc/sys/kernel/msgmni #系統范圍內最大多少個消息隊列
/proc/sys/kernel/panic #發生“內核嚴重錯誤(kernel panic)”后,自動重新引導之前等待的時間(sec)
/proc/sys/kernel/threads-max #示內核所能使用的線程的最大數目
/proc/sys/net/ipv4/tcp_syncookies #設1防范SYN攻擊,
注: 可配合netstat -an | grep -i “服務器IP:80″ | awk ‘{print $6}’ | sort | uniq -c | sort -n查看有無SYN攻擊,SYN_RECV連接高即為可能.
++文件加保護,防止誤刪除
chattr +i filename # 禁止刪除
chattr -i filename # 取消禁止
++tcpdump實例
tcpdump [src|dst] host [!] 192.168.25.1192.168.25.1
tcpdump host 192.168.25.1 and / (192.168.25.2 or 192.168.25.3 /) #截獲主機192.168.25.1 和主機192.168.25.2 或192.168.25.3的通信
tcpdump -i eth0 host 192.168.10.1 and [src|dst] port 80 #監聽192.168.10.1上的目的/源端口是80的數據包
tcpdump -l | tee file.log #在抓包到文件的同時可以查看所抓的包
tcpdump -[w|r] tcpdump.out #把監聽到的信息輸入/輸出到文件
tcpdump udp port 53 #監聽udp的53端口通信
tcpdump arp #監聽arp廣播
參數-nn 不進行端口和主機名稱的轉換
++nmap實例
nmap -v www.zhangjianfeng.com #掃描www.zhangjianfeng.com所有的開放TCP端口。-v細節模式。
nmap -sS -O www.zhangjianfeng.com/24 #秘密SYN掃描,掃描主機www.zhangjianfeng.com所在的“C類”網段 的255臺主機。并嘗試每臺主機操作系統類型
nmap -sV -p 22 www.koowo.com[/24] #掃描目標主機[及所在網段]是否開放22端口
++連接數統計
netstat -an|grep 80|grep EST|wc -l
netstat -an|grep TIME_WAIT|wc -l
++關于程序nice調整
nice –n -5 xyz #以nice值-5開始程序xyz
renice 10 2500 #將pid為2500的進程的nice值改為10
++磁盤塊大小查看
dumpe2fs -h /dev/sda1 |grep -F “Block size”
++相關命令參數說明
#top
f 增加/減少顯示列
A 通過不同的系統資源情況分類顯示結果
#iostat
Tps:設備每秒進行傳輸的數量(每秒的I/O請求)
Blk_read/s, Blk_wrtn/s:該設備每秒讀寫的塊的數量。塊可能為不同的容量。塊的大小一般為1024、2048、4048byte
Blk_read, Blk_wrtn:自系統啟動以來讀寫的塊設備的總量
#vmstat
r:等待運行時間的進程數量 b:處在不可中斷睡眠狀態的進程
swpd:虛擬內存的數量 free:空閑內存的數量 buff:用做緩沖區的內存數量
si:從硬盤交換來的數量 so:交換到硬盤去的數量
bi:向一個塊設備輸出的塊數量 bo:從一個塊設備接受的塊數量
in:每秒發生的中斷數量, 包括時鐘 cs:每秒發生的context switches的數量
++分析可載入模塊的相依性
depmod -a #可檢測模塊的相依性,供modprobe在安裝模塊時使用。
++求某列的平均值
grep “2000 packets transmitted” ping_log_* |awk ‘{print $4,$6,$10}’ |awk ‘{print $3}’|awk ‘{sum+=$0}END{print sum/NR}’
++awk取某列的第一行,去掉其它行
awk??’ !a[$1]++’
++修改時區
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看當前時區 cat?/etc/sysconfig/clock
++使用退格刪無法刪除光標前一字符,出現了^H^h
?stty erase ^h
++限制su 用戶名單
在/etc/pam.d/su?增加一行,并將需要su的用戶加入指定組admin
auth required /lib/security/pam_wheel.so group=admin