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