1. 程式人生 > >linux tips 技巧筆記二

linux tips 技巧筆記二

++如何查詢大小為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

++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=“[/[email protected]/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 ~/.bashrcxport 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 [email protected] -oi To [email protected]

++單獨取出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

相關推薦

linux tips 技巧筆記

++如何查詢大小為500K到1000K之間的檔案find / -type f -size +500k -and -size -1000k ++僅列出當前目錄下的檔名.find ./ -type f -maxdepth 1 -exec basename {} /; ++讓主機不

Linux 進階筆記()

這幾篇博文主要記錄博主的Linux 學習之路,用作以後回顧和參考。大家可以選擇略過也可以作參考。 Linux 服務管理 (一)服務的簡單介紹 服務的啟動與自啟動:       服務啟動:就

linux學習筆記

它的 程序 控制 提示 資源 進程控制 執行過程 博客 pre 進程(process)是程序實體運行的過程,是系統進行資源分配和調度的獨立單位,或者說是一個程序在處理機上的一次執行活動。 區分一下進程和程序 1.0 程序是一個靜態指令的集合;而進程是一個程序的動態執行過程

Linux學習筆記()---VIM

ext vpd img ffffff linux學習 -o 學習 shadow fff Linux學習筆記(二)---VIM

Linux 學習總結() 系統管理技巧

w vmstat top sar nload 1 命令w 查看系統負載: USER —登錄的用戶名TTY —登錄後系統分配的終端號FROM—遠程主機名,即從哪兒登錄來的LOGIN—何時登錄IDLE—空閑了多長時間,表示用戶閑置的時間。這是一個計時器,一旦用戶執行任何操作,該計時器便會被

Linux 學習總結(十三)系統管理技巧2

nload free ps netstat tcpdump 1 監控io性能 nload -x %util 項 數字過大,說明io性能差,有可能是磁盤老化,或者磁盤本身故障。iotop 命令 也是動態顯示,類似於top ,可以查看磁盤的讀寫速度查看內存使用情況 2 free -h 查看內存

Linux系統運維筆記(),Linux文件編輯命令

模式 查看 輸入 保存 進入 OS 打開 退出 ase Linux系統運維筆記 Linux文件編輯命令 首先我們使用命令 vi filename 打開一個文件,這個時候進入到的是命令模式 接下來我們按i,然後鍵盤隨便輸入寫內容。 然後按ESC重新進入到命令模式。 在命令

Linux -學習筆記

user 連接 文件 非對稱加密 用戶名 tps 改變 linux平臺 authorize 第四節:SSH config命令講解 1)config 為了方便我們批量管理多個ssh 2)config存放在~/.ssh/config 3)SSH config語法關鍵字

Linux實戰教學筆記40: Mha-Atlas-MySQL高可用方案實踐()

broadcast level lis 失敗 mat password cti overruns red 六,配置VIP漂移 主機名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.6

Linux-基礎篇筆記》 Vim編輯器()

當前 其他 開關 /word 備註 lsp 包含 關閉 ubunt Linux圖形化界面下的文本編輯器 gedit 、 libre office 、 evince PDF閱讀器 ①gedit是一個GNOME桌面環境下兼容UTF-8的文本編輯器。它使用GTK+編寫而成

Linux的學習筆記

所有 獨立 -m 免密碼 情況 修改權限 沒有權限 當前 網絡 1.網卡是一個專門負責網絡通訊的硬件設備,IP地址是設置在網卡上的地址信息(是保證電腦之間正常通訊的重要設置),每臺電腦的IP地址不能相同,否則將會出現IP地址沖突無法正常通信。ifconfig 可以查看和配置

Linux開發學習筆記

Shell程式設計 1、簡單介紹 Shell 指令碼(shell script),是一種為 shell 編寫的指令碼程式。Shell 程式設計跟 java、php 程式設計一樣,只要有一個能編寫程式碼的文字編輯器和一個能解釋執行的指令碼直譯器就可以了。簡單地講,shell程式設計就是對一

Linux內核學習筆記——進程

signal ets stop define 找到 準備 proc use alloc 一 進程與線程 進程就是處於執行期的程序,包含了獨立地址空間,多個執行線程等資源。 線程是進程中活動的對象,每個線程都擁有獨立的程序計數器、進程棧和一組進程寄

Linux學習筆記 Linux下C語言開發工具

2.1常用編輯工具 1.vim編輯器 VIM編輯器基本山可分為三種模式分別是命令模式,插入模式和底行模式 下面是VIM模式轉換圖。 (1)在.vimrc檔案中設定幾個常用的底行命令 設定縮排命令    :set smartindent 

鳥叔的Linux私房菜基礎篇-學習筆記()

超簡單文字編輯器:nano 比較重要的幾個組合按鍵 正確的關機方法 觀察系統的使用狀態 : 下達"who"指令檢視誰還在線上 下達"netstat -a’'指令檢視網路連線狀態 下達"ps -aux"指令,看背景執行的程式 正確的關機指令使用 :

日常運維管理技巧linux任務計劃cron)

十二、crond crond 是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程序,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務 工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行

Simulink Test筆記(含一些小技巧

說明 本文記錄simulink test在使用過程中的心得,包含使用過程中新的發現及提高測試效率的一些技巧。 本文提到的內容均基於以下執行環境: MATLAB   版本 9.3 (R2017b) Simulink   版本 9.0 (R2017

Linux菜鳥筆記——BASH(

實驗環境:Ubantu  16.04 一、變數鍵盤讀取(read) read xxx #從鍵盤獲取輸入,存到xxx變數中 read #從鍵盤獲取輸入,存到REPLY變數中 echo -n “請輸入

Linux學習筆記(艱辛的wxWidgets環境搭建)

     十分鐘前我的第一個wxWidgets程式終於在Linux上現身了,雖然只是一個小小的測試窗體程式,但是。他的出現確實讓我驚喜重重,因為在環境搭建的過程中真的是走了很多彎路。現在把正確的搭建過程記錄下來。真的很感謝wxforum.shadonet.com以及www.codeproject.com兩個

linux備忘筆記)-bash

1.linux中變數的宣告 name=myname 如果值中有特殊字元,需要用引號包起來,或者前面加一個轉義符轉義符。如name=my‘name  是錯誤的 變數的銷燬 unset name 若該變數需要在其他子程式執行,則需要以 export 來使變數變成環境變數 2.用