一、文件
touch file # 創建空白文件
rm -rf 目錄名 # 不提示刪除非空目錄(-r:遞歸刪除 -f強制)
dos2unix # windows文本轉linux文本
unix2dos # linux文本轉windows文本
enca filename # 查看編碼 安裝 yum install -y enca
md5sum # 查看md5值ln 源文件 目標文件 # 硬鏈接
ln -s 源文件 目標文件 # 符號連接
readlink -f /data # 查看連接真實目錄
cat file | nl |less # 查看上下翻頁且顯示行號 q退出head # 查看文件開頭內容
head -c 10m # 截取文件中10m內容
split -c 10m # 將文件切割大小為10m
tail -f file # 查看結尾 監視日志文件
file # 檢查文件類型
umask # 更改默認權限uniq # 刪除重復的行
uniq -c # 重復的行出現次數
uniq -u # 只顯示不重復行paste a b # 將兩個文件合并用tab鍵分隔開
paste -d'+' a b # 將兩個文件合并指定'+'符號隔開
paste -s a # 將多行數據合并到一行用tab鍵隔開
chattr +i /etc/passwd # 設置不可改變位
more # 向下分面器
locate 字符串 # 搜索wc -l file # 查看行數
cp filename{,.bak} # 快速備份一個文件
\cp a b # 拷貝不提示 既不使用別名 cp -i
rev # 將行中的字符逆序排列
comm -12 2 3 # 行和行比較匹配
iconv -f gbk -t utf8 原.txt > 新.txt # 轉換編碼
rename 原模式 目標模式 文件 #重命名,可正則
watch -d -n 1 'df; ls -flat /path' # 實時某個目錄下查看最新改動過的文件
cp -v /dev/dvd /rhel4.6.Iphone 蘋果 ios 9660 # 制作鏡像
diff suzu.c suzu2.c > sz.patch # 制作補丁
patch suzu.c < sz.patch # 安裝補丁
sort
-t # 指定排序時所用的欄位分隔字符-n # 依照數值的大小排序-r # 以相反的順序來排序-f # 排序時,將小寫字母視為大寫字母-d # 排序時,處理英文字母、數字及空格字符外,忽略其他的字符-c # 檢查文件是否已經按照順序排序-b # 忽略每行前面開始處的空格字符-m # 前面3個字母依照月份的縮寫進行排序-k # 指定域-m # 將幾個排序好的文件進行合并+<起始欄位>-<結束欄位> # 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。-o # 將排序后的結果存入指定的文n # 表示進行排序r # 表示逆序sort -n # 按數字排序sort -nr # 按數字倒敘sort -u # 過濾重復行sort -m a.txt c.txt # 將兩個文件內容整合到一起sort -n -t' ' -k 2 -k 3 a.txt # 第二域相同,將從第三域進行升降處理sort -n -t':' -k 3r a.txt # 以:為分割域的第三域進行倒敘排列sort -k 1.3 a.txt # 從第三個字母起進行排序sort -t" " -k 2n -u a.txt # 以第二域進行排序,如果遇到重復的,就刪除
find
# linux文件無創建時間# access 使用時間 # modify 內容修改時間 # change 狀態改變時間(權限、屬主)# 時間默認以24小時為單位,當前時間到向前24小時為0天,向前48-72小時為2天# -and 且 匹配兩個條件 參數可以確定時間范圍 -mtime +2 -and -mtime -4# -or 或 匹配任意一個條件find /etc -name http # 按文件名查找find . -type f # 查找某一類型文件find / -perm # 按照文件權限查找find / -user # 按照文件屬主查找find / -group # 按照文件所屬的組來查找文件find / -atime -n # 文件使用時間在n天以內find / -atime +n # 文件使用時間在n天以前find / -mtime -n # 文件內容改變時間在n天以內find / -mtime +n # 文件內容改變時間在n天以前find / -ctime +n # 文件狀態改變時間在n天前find / -ctime -n # 文件狀態改變時間在n天內find / -size +1000000c -print # 查找文件長度大于1m字節的文件find /etc -name "passwd*" -exec grep "xuesong" {} \; # 按名字查找文件傳遞給-exec后命令find . -name 't*' -exec basename {} \; # 查找文件名,不取路徑find . -type f -name "err*" -exec rename err err {} \; # 批量改名(查找err 替換為 err {}文件find 路徑 -name *name1* -or -name *name2* # 查找任意一個關鍵字
tar、gzip、gunzip
tar zxvpf gz.tar.gz -c 放到指定目錄 包中的目錄 # 解包tar.gz 不指定目錄則全解壓tar zcvpf /$path/gz.tar.gz * # 打包gz 注意*最好用相對路徑tar zcf /$path/gz.tar.gz * # 打包正確不提示tar ztvpf gz.tar.gz # 查看gztar xvf 1.tar -c 目錄 # 解包tartar -cvf 1.tar * # 打包tartar tvf 1.tar # 查看tartar -rvf 1.tar 文件名 # 給tar追加文件tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home/* /etc # 打包/home, /etc ,但排除 /home/dmtsaitar -n "2005/06/01" -zcvf home.tar.gz /home # 在 /home 當中,比 2005/06/01 新的文件才備份tar -zcvfh home.tar.gz /home # 打包目錄中包括連接目錄zgrep 字符 1.gz # 查看壓縮包中文件字符行bzip2 -dv 1.tar.bz2 # 解壓bzip2bzip2 -v 1.tar # bzip2壓縮bzcat # 查看bzip2gzip a # 直接壓縮文件 # 壓縮后源文件消失gunzip a.gz # 直接解壓文件 # 解壓后源文件消失gzip -dv 1.tar.gz # 解壓gzip到targzip -v 1.tar # 壓縮tar到gzunzip zip.zip # 解壓zipzip zip.zip * # 壓縮zip# rar3.6下載: http://www.rarsoft.com/rar/rarlinux-3.6.0.tar.gzrar a rar.rar *.jpg # 壓縮文件為rar包unrar x rar.rar # 解壓rar包7z a 7z.7z * # 7z壓縮7z e 7z.7z # 7z解壓
二、系統
系統信息
uname -a # 查看linux內核版本信息cat /proc/version # 查看內核版本cat /etc/issue # 查看系統版本lsb_release -a # 查看系統版本 需安裝 centos-releaselocale -a # 列出所有語系hwclock # 查看時間who # 當前在線用戶w # 當前在線用戶whoami # 查看當前用戶名logname # 查看初始登陸用戶名uptime # 查看服務器啟動時間sar -n dev 1 10 # 查看網卡網速流量dmesg # 顯示開機信息lsmod # 查看內核模塊
硬件信息
more /proc/cpuinfo # 查看cpu信息cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看cpu型號和邏輯核心數getconf long_bit # cpu運行的位數cat /proc/cpuinfo | grep physical | uniq -c # 物理cpu個數cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l # 結果大于0支持64位cat /proc/cpuinfo|grep flags # 查看cpu是否支持虛擬化 pae支持半虛擬化 intelvt 支持全虛擬化more /proc/meminfo # 查看內存信息dmidecode # 查看全面其他硬件 信息dmidecode | grep "product name" # 查看服務器型號dmidecode | grep -p -a5 "memory\s+device" | grep size | grep -v range # 查看內存插槽cat /proc/mdstat # 查看軟raid信息cat /proc/scsi/scsi # 查看dell硬raid信息(ibm、hp需要官方檢測工具)lspci # 查看其他硬件 信息lspci|grep raid # 查看是否支持raidlspci -vvv |grep ethernet # 查看網卡型號lspci -vvv |grep kernel|grep driver # 查看驅動模塊modinfo tg2 # 查看驅動版本(驅動模塊)ethtool -i em1 # 查看網卡驅動版本
系統命令
wall # 給其它用戶發消息
whereis ls # 查找命令的目錄
which # 查看當前要執行的命令所在的路徑
clear # 清空整個屏幕
reset # 重新初始化屏幕
cal # 顯示月歷
echo -n 123456 | md5sum # md5加密
mkpasswd # 隨機生成密碼 -l位數 -c大小 -c小寫 -d數字 -s特殊字符
netstat -anlp | grep port # 是否打開了某個端口
ntpdate stdtime.gov.hk # 同步時間
tzselect # 選擇時區 #+8=(5 9 1 1) # (tz='asia/shanghai'; export tz)括號內寫入 /etc/profile
/sbin/hwclock -w # 保存到其他硬件
/etc/shadow # 賬戶影子文件
lang=en # 修改語言
vim /etc/sysconfig/i18n # 修改編碼 lang="en_us.utf-8"
export lc_all=c # 強制字符集
vi /etc/hosts # 查詢靜態主機名
alias # 別名
watch uptime # 監測命令動態刷新
ipcs -a # 查看linux系統當前單個共享內存段的最大值
lsof |grep /lib # 查看加載庫文件
ldconfig # 動態鏈接庫管理命令
dist-upgrade # 會改變配置文件,改變舊的依賴關系,改變系統版本
/boot/grub/grub.conf # grub啟動項配置
sysctl -p # 修改內核參數/etc/sysctl.conf,讓/etc/rc.d/rc.sysinit讀取生效
mkpasswd -l 8 -c 2 -c 2 -d 4 -s 0 # 隨機生成指定類型密碼
echo 1 > /proc/sys/net/ipv4/tcp_syncookies # 使tcp syn cookie 保護生效 # "syn attack"是一種拒絕服務的攻擊方式
進程
ps -eaf # 查看所有進程kill -9 pid # 強制終止某個pid進程kill -15 pid # 安全退出 需程序內部處理信號cmd & # 命令后臺運行nohup cmd & # 后臺運行不受shell退出影響ctrl+z # 將前臺放入后臺(暫停)jobs # 查看后臺運行程序bg 2 # 啟動后臺暫停進程fg 2 # 調回后臺進程pstree # 進程樹vmstat 1 9 # 每隔一秒報告系統性能信息9次sar # 查看cpu等狀態lsof file # 顯示打開指定文件的所有進程lsof -i:32768 # 查看端口的進程renice +1 180 # 把180號進程的優先級加1ps aux |grep -v user | sort -nk +4 | tail # 顯示消耗內存最多的10個運行中的進程,以內存使用量排序.cpu+3
top
前五行是系統整體的統計信息。第一行: 任務隊列信息,同 uptime 命令的執行結果。內容如下:01:06:48 當前時間up 1:22 系統運行時間,格式為時:分1 user 當前登錄用戶數load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。第二、三行:為進程和cpu的信息。當有多個cpu時,這些內容可能會超過兩行。內容如下:tasks: 29 total 進程總數1 running 正在運行的進程數28 sleeping 睡眠的進程數0 stopped 停止的進程數0 zombie 僵尸進程數cpu(s): 0.3% us 用戶空間占用cpu百分比1.0% sy 內核空間占用cpu百分比0.0% ni 用戶進程空間內改變過優先級的進程占用cpu百分比98.7% id 空閑cpu百分比0.0% wa 等待輸入輸出的cpu時間百分比0.0% hi0.0% si第四、五行:為內存信息。內容如下:mem: 191272k total 物理內存總量173656k used 使用的物理內存總量17616k free 空閑內存總量22052k buffers 用作內核緩存的內存量swap: 192772k total 交換區總量0k used 使用的交換區總量192772k free 空閑交換區總量123988k cached 緩沖的交換區總量。內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在于內存中的交換區的大小。相應的內存再次被換出時可,不必再對交換區寫入
進程信息區,各列的含義如下: # 顯示各個進程的詳細信息
序號 列名 含義a pid 進程idb ppid 父進程idc ruser real user named uid 進程所有者的用戶ide user 進程所有者的用戶名f group 進程所有者的組名g tty 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?h pr 優先級i ni nice值。負值表示高優先級,正值表示低優先級j p 最后使用的cpu,僅在多cpu環境下有意義k %cpu 上次更新到現在的cpu時間占用百分比l time 進程使用的cpu時間總計,單位秒m time+ 進程使用的cpu時間總計,單位1/100秒n %mem 進程使用的物理內存百分比o virt 進程使用的虛擬內存總量,單位kb。virt=swap+resp swap 進程使用的虛擬內存中,被換出的大小,單位kb。q res 進程使用的、未被換出的物理內存大小,單位kb。res=code+datar code 可執行代碼占用的物理內存大小,單位kbs data 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kbt shr 共享內存大小,單位kbu nflt 頁面錯誤次數v ndrt 最后一次寫入到現在,被修改過的頁面數。w s 進程狀態。d=不可中斷的睡眠狀態r=運行s=睡眠t=跟蹤/停止z=僵尸進程x command 命令名/命令行y wchan 若該進程在睡眠,則顯示睡眠中的系統函數名z flags 任務標志,參考 sched.h
signal
kill -l # 查看linux提供的信號trap "echo aaa" 2 3 15 # shell使用 trap 捕捉退出信號# 發送信號一般有兩種原因:# 1(被動式) 內核檢測到一個系統事件.例如子進程退出會像父進程發送sigchld信號.鍵盤按下control+c會發送sigint信號# 2(主動式) 通過系統調用kill來向指定進程發送信號 # 進程結束信號 sigterm 和 sigkill 的區別: sigterm 比較友好,進程能捕捉這個信號,根據您的需要來關閉程序。在關閉程序之前,您可以結束打開的記錄文件和完成正在做的任務。在某些情況下,假如進程正在進行作業而且不能中斷,那么進程可以忽略這個sigterm信號。# 如果一個進程收到一個sigusr1信號,然后執行信號綁定函數,第二個sigusr2信號又來了,第一個信號沒有被處理完畢的話,第二個信號就會丟棄。sighup 1 a # 終端掛起或者控制進程終止sigint 2 a # 鍵盤終端進程(如control+c)sigquit 3 c # 鍵盤的退出鍵被按下sigill 4 c # 非法指令sigabrt 6 c # 由abort(3)發出的退出指令sigfpe 8 c # 浮點異常sigkill 9 aef # kill信號 立刻停止sigsegv 11 c # 無效的內存引用sigpipe 13 a # 管道破裂: 寫一個沒有讀端口的管道sigalrm 14 a # 鬧鐘信號 由alarm(2)發出的信號 sigterm 15 a # 終止信號,可讓程序安全退出 kill -15sigusr1 30,10,16 a # 用戶自定義信號1sigusr2 31,12,17 a # 用戶自定義信號2sigchld 20,17,18 b # 子進程結束自動向父進程發送sigchld信號sigcont 19,18,25 # 進程繼續(曾被停止的進程)sigstop 17,19,23 def # 終止進程sigtstp 18,20,24 d # 控制終端(tty)上按下停止鍵sigttin 21,21,26 d # 后臺進程企圖從控制終端讀sigttou 22,22,27 d # 后臺進程企圖從控制終端寫缺省處理動作一項中的字母含義如下:a 缺省的動作是終止進程b 缺省的動作是忽略此信號,將該信號丟棄,不做處理c 缺省的動作是終止進程并進行內核映像轉儲(dump core),內核映像轉儲是指將進程數據在內存的映像和進程在內核結構中的部分內容以一定格式轉儲到文件系統,并且進程退出執行,這樣做的好處是為程序員提供了方便,使得他們可以得到進程當時執行時的數據值,允許他們確定轉儲的原因,并且可以調試他們的程序。d 缺省的動作是停止進程,進入停止狀況以后還能重新進行下去,一般是在調試的過程中(例如ptrace系統調用)e 信號不能被捕獲f 信號不能被忽略
crontab
at 5pm + 3 days /bin/ls # 單次定時任務 指定三天后下午5:00執行/bin/lscrontab -e # 編輯周期任務#分鐘 小時 天 月 星期 命令或腳本1,30 1-3/2 * * * 命令或腳本 >> file.log 2>&1echo "40 7 * * 2 /root/sh">>/var/spool/cron/root # 直接將命令寫入周期任務crontab -l # 查看自動周期性任務crontab -r # 刪除自動周期性任務cron.deny和cron.allow # 禁止或允許用戶使用周期任務service crond start|stop|rest art # 啟動自動周期性服務
日志管理
history # 歷時命令默認1000條histtimeformat="%y-%m-%d %h:%m:%s " # 讓history命令顯示具體時間history -c # 清除記錄命令cat $home/.bash_history # 歷史命令記錄文件last # 查看登陸過的用戶信息who /var/log/wtmp # 查看登陸過的用戶信息lastlog # 用戶最后登錄的時間lastb -a # 列出登錄系統失敗的用戶相關信息/var/log/btmp # 登錄失敗二進制日志記錄文件tail -f /var/log/messages # 系統日志tail -f /var/log/secure # ssh日志
selinux
sestatus -v # 查看selinux狀態getenforce # 查看selinux模式setenforce 0 # 設置selinux為寬容模式(可避免阻止一些操作)semanage port -l # 查看selinux端口限制規則semanage port -a -t http_port_t -p tcp 8000 # 在selinux中注冊端口類型vi /etc/selinux/config # selinux配置文件selinux=enfoceing # 關閉selinux 把其修改為 selinux=disabled
iptables
內建三個表:nat mangle 和 filter
filter預設規則表,有input、forward 和 output 三個規則鏈
vi /etc/sysconfig/iptables # 配置文件input # 進入forward # 轉發output # 出去accept # 將封包放行reject # 攔阻該封包drop # 丟棄封包不予處理-a # 在所選擇的鏈(input等)末添加一條或更多規則-d # 刪除一條-e # 修改-p # tcp、udp、icmp 0相當于所有all !取反-p # 設置缺省策略(與所有鏈都不匹配強制使用此策略)-s # ip/掩碼 (ip/24) 主機名、網絡名和清楚的ip地址 !取反-j # 目標跳轉,立即決定包的命運的專用內建目標-i # 進入的(網絡)接口 [名稱] eth0-o # 輸出接口[名稱] -m # 模塊--sport # 源端口--dport # 目標端口iptables -f # 將防火墻中的規則條目清除掉 # 注意: iptables -p input acceptiptables-rest ore < 規則文件 # 導入防火墻規則/etc/init.d/iptables save # 保存防火墻設置/etc/init.d/iptables rest art # 重啟防火墻服務iptables -l -n # 查看規則iptables -t nat -nl # 查看轉發
iptables實例
iptables -l input # 列出某規則鏈中的所有規則iptables -x allowed # 刪除某個規則鏈 ,不加規則鏈,清除所有非內建的iptables -z input # 將封包計數器歸零iptables -n allowed # 定義新的規則鏈iptables -p input drop # 定義過濾政策iptables -a input -s 192.168.1.1 # 比對封包的來源ip # ! 192.168.0.0/24 ! 反向對比iptables -a input -d 192.168.1.1 # 比對封包的目的地ipiptables -a input -i eth0 # 比對封包是從哪片網卡進入iptables -a forward -o eth0 # 比對封包要從哪片網卡送出 eth+表示所有的網卡iptables -a input -p tcp # -p ! tcp 排除tcp以外的udp、icmp。-p all所有類型iptables -d input 8 # 從某個規則鏈中刪除一條規則iptables -d input --dport 80 -j drop # 從某個規則鏈中刪除一條規則iptables -r input 8 -s 192.168.0.1 -j drop # 取代現行規則iptables -i input 8 --dport 80 -j accept # 插入一條規則iptables -a input -i eth0 -j drop # 其它情況不允許iptables -a input -p tcp -s ip -j drop # 禁止指定ip訪問iptables -a input -p tcp -s ip --dport port -j drop # 禁止指定ip訪問端口iptables -a input -s ip -p tcp --dport port -j accept # 允許在ip訪問指定端口iptables -a input -p tcp --dport 22 -j drop # 禁止使用某端口iptables -a input -i eth0 -p icmp -m icmp --icmp-type 8 -j drop # 禁止icmp端口iptables -a input -i eth0 -p icmp -j drop # 禁止icmp端口iptables -t filter -a input -i eth0 -p tcp --syn -j drop # 阻止所有沒有經過你系統授權的tcp連接iptables -a input -f -m limit --limit 100/s --limit-burst 100 -j accept # ip包流量限制iptables -a input -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j accept # 除192.168.62.1外,禁止其它人ping我的主機iptables -a input -p tcp -m tcp --dport 80 -m state --state new -m recent --update --seconds 5 --hitcount 20 --rttl --name web --rsource -j drop
iptables配置實例文件
# generated by iptables-save v1.2.11 on fri feb 9 12:10:37 2007*filter:input accept [637:58967]:forward drop [0:0]:output accept [5091:1301533]# 允許的ip或ip段訪問 建議多個-a input -s 127.0.0.1 -p tcp -j accept-a input -s 192.168.0.0/255.255.0.0 -p tcp -j accept# 開放對外開放端口-a input -p tcp --dport 80 -j accept# 指定某端口針對ip開放-a input -s 192.168.10.37 -p tcp --dport 22 -j accept# 拒絕所有協議(input允許)-a input -p tcp -m tcp --tcp-flags fin,syn,rst,psh,urg rst -j drop# 允許已建立的或相關連的通行iptables -a input -m state --state established,related -j accept# 拒絕ping-a input -p tcp -m tcp -j reject --reject-with icmp-port-unreachablecommit# completed on fri feb 9 12:10:37 2007
iptables配置實例
# 允許某段ip訪問任何端口iptables -a input -s 192.168.0.3/24 -p tcp -j accept# 設定預設規則 (拒絕所有的數據包,再允許需要的,如只做其他web服務器 .還是推薦三個鏈都是drop)iptables -p input dropiptables -p forward dropiptables -p output accept# 注意: 直接設置這三條會掉線# 開啟22端口iptables -a input -p tcp --dport 22 -j accept# 如果output 設置成drop的,要寫上下面一條iptables -a output -p tcp --sport 22 -j accept # 注:不寫導致無法ssh.其他的端口一樣,output設置成drop的話,也要添加一條鏈# 如果開啟了其他web服務器 ,output設置成drop的話,同樣也要添加一條鏈iptables -a output -p tcp --sport 80 -j accept# 做其他web服務器 ,開啟80端口 ,其他同理iptables -a input -p tcp --dport 80 -j accept# 做郵件服務器,開啟25,110端口iptables -a input -p tcp --dport 110 -j acceptiptables -a input -p tcp --dport 25 -j accept# 允許icmp包通過,允許pingiptables -a output -p icmp -j accept (output設置成drop的話) iptables -a input -p icmp -j accept (input設置成drop的話)# 允許loopback!(不然會導致dns無法正常關閉等問題) iptables -a input -i lo -p all -j accept (如果是input drop)iptables -a output -o lo -p all -j accept(如果是output drop)
Memory
free -m#-/+ buffers/cache: 6458 1649#6458m為真實使用內存 1649m為真實剩余內存(剩余內存+緩存+緩沖器)#linux會利用所有的剩余內存作為緩存,所以要保證linux運行速度,就需要保證內存的緩存大小
date
date -s 20091112 # 設日期date -s 18:30:50 # 設時間date -d "7 days ago" +%y%m%d # 7天前日期date -d "5 minute ago" +%h:%m # 5分鐘前時間date -d "1 month ago" +%y%m%d # 一個月前date +%y-%m-%d -d '20110902' # 日期格式轉換date +%y-%m-%d_%x # 日期和時間date +%n # 納秒date -d "2012-08-13 14:00:23" +%s # 換算成秒計算(1970年至今的秒數)date -d "@1363867952" +%y-%m-%d-%t # 將時間戳換算成日期date -d "1970-01-01 utc 1363867952 seconds" +%y-%m-%d-%t # 將時間戳換算成日期date -d "`awk -f. '{print $1}' /proc/uptime` second ago" +"%y-%m-%d %h:%m:%s" # 格式化系統啟動時間(多少秒前)
開機啟動腳本順序
/etc/profile/etc/profile.d/*.sh~/bash_profile~/.bashrc/etc/bashrc
四、服務
shell執行mysql
mysql -u$username -p$passwd -h$dbhost -p$dbport -a -e "
use $dbname;
delete from data where date=('$date1');"
# 執行多條mysql命令mysql -uroot -p -s mysql.sock -e "
use db;
alter table gift add column accountid int(11) not null;
flush privileges;"
# 不登陸mysql插入字段
五、網絡
rz # 通過ssh上傳小文件
sz # 通過ssh下載小文件
ifconfig eth0 down # 禁用網卡
ifconfig eth0 up # 啟用網卡
ifup eth0:0 # 啟用網卡
mii-tool em1 # 查看網線是否連接
traceroute www.baidu.com # 測試跳數
vi /etc/resolv.conf # 設置dns nameserver ip 定義dns服務器的ip地址
nslookup www.moon.com # 解析域名ip
dig -x www.baidu.com # 解析域名ip
curl -i www.baidu.com # 查看網頁http頭
tcpdump tcp port 22 # 抓包
lynx # 文本上網
wget -p 路徑 http地址 # 下載 包名:wgetrc
curl -d "user=xuesong&pwd=123" http://www.abc.cn/result # 提交web頁面表單 需查看表單提交地址
rsync -avzp -e "ssh -p 22" /dir user@$ip:/dir # 同步目錄 # --delete 無差同步 刪除目錄下其它文件
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0 # 增加邏輯ip地址
mtr -r www.baidu.com # 測試網絡鏈路節點響應時間 # trace ping 結合
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 禁ping
ipcalc -m "$ip" -p "$num" # 根據ip和主機最大數計算掩碼
dig +short txt hacker.wp.dg.cx # 通過 dns 來讀取 wikipedia 的hacker詞條
host -t txt hacker.wp.dg.cx # 通過 dns 來讀取 wikipedia 的hacker詞條
net rpc shutdown -i ip_address -u username%password # 遠程關掉一臺windows機器
wget --random-wait -r -p -e robots=off -u mozilla www.example.com # 遞歸方式下載整個網站
netstat
-a # 顯示所有連接中的socket-t # 顯示tcp連接-u # 顯示udp連接-n # 顯示所有已建立的有效連接-anlp # 查看鏈接–r # 查看路由表
ssh
ssh -p 22 user@192.168.1.209 # 從linux ssh登錄另一臺linux ssh -p 22 root@192.168.1.209 cmd # 利用ssh操作遠程主機scp -p 22 文件 root@ip:/目錄 # 把本地文件拷貝到遠程主機sshpass -p '密碼' ssh -n root@$ip "echo hello" # 指定密碼遠程操作ssh -o stricthostkeychecking=no $ip # ssh連接不提示yesssh -t "su -" # 指定偽終端 客戶端以交互模式工作scp root@192.168.1.209:遠程目錄 本地目錄 # 把遠程指定文件拷貝到本地ssh -n -l2001:remotehost:80 user@somemachine # 用ssh創建端口轉發通道ssh -t host_a ssh host_b # 嵌套使用sshssh -t -p 22 $user@$ip /bin/su - root -c {$cmd}; # 遠程su執行命令 cmd="\"/sbin/ifconfig eth0\""ssh-keygen -t rsa # 生成密鑰ssh-copy-id -i xuesong@10.10.10.133 # 傳送keyvi $home/.ssh/authorized_keys # 公鑰存放位置sshfs name@server:/path/to/folder /path/to/mount/point # 通過ssh掛載遠程主機上的文件夾fusermount -u /path/to/mount/point # 卸載ssh掛載的目錄ssh user@host cat /path/to/remotefile | diff /path/to/localfile - # 用diff對比遠程文件跟本地文件su - user -c "ssh user@192.168.1.1 \"echo -e aa |mail -s test mail@163.com\"" # 切換用戶登錄遠程發送郵件
ftps上傳
ftp -i -v -n $host <<enduser $username $password cd /ftpmkdir datacd datamput *.tar.gzbye
end
nmap
snmp
六、存儲
df -ph # 查看硬盤容量
df -t # 查看磁盤分區格式
df -i # 查看inode節點 如果inode用滿后無法創建文件
du -h 目錄 # 檢測目錄下所有文件大小
du -sh * # 顯示當前目錄中子目錄的大小
iostat -x # 查看磁盤io狀態
mount # 查看分區掛載情況
fdisk -l # 查看磁盤分區狀態
fdisk /dev/hda3 # 分區
mkfs -t ext3 /dev/hda3 # 格式化分區
fsck -y /dev/sda6 # 對文件系統修復
lsof |grep delete
# 釋放進程占用磁盤空間 列出進程后,查看文件是否存在,不存在則kill掉此進程tmpwatch -afv 3 # 刪除3小時內的臨時文件
cat /proc/filesystems # 查看當前系統支持文件系統
mount -o remount,rw / # 修改只讀文件系統為讀寫
smartctl -h /dev/sda # 檢測硬盤狀態
smartctl -i /dev/sda # 檢測硬盤信息
smartctl -a /dev/sda # 檢測所有信息
e2label /dev/sda5 # 查看卷標
e2label /dev/sda5 new-label # 創建卷標
ntfslabel -v /dev/sda8 new-label # ntfs添加卷標
tune2fs -j /dev/sda # ext2分區轉ext3分區
mke2fs -b 2048 /dev/sda5 # 指定索引塊大小
dumpe2fs -h /dev/sda5 # 查看超級塊的信息
mount -t Iphone 蘋果 ios 9660 /dev/dvd /mnt # 掛載光驅
mount -t ntfs-3g /dev/sdc1 /media/yidong # 掛載ntfs硬盤
mount -t nfs 10.0.0.3:/opt/images/ /data/img # 掛載nfs
mount -o loop /software/rhel4.6.Iphone 蘋果 ios /mnt/ # 掛載鏡像文件
新硬盤掛載
fdisk /dev/sdc p # 打印分區d # 刪除分區n # 創建分區,(一塊硬盤最多4個主分區,擴展占一個主分區位置。p主分區 e擴展)w # 保存退出mkfs -t ext3 -l 卷標 /dev/sdc1 # 格式化相應分區mount /dev/sdc1 /mnt # 掛載vi /etc/fstab # 添加開機掛載分區label=/data /data ext3 defaults 1 2 # 用卷標掛載/dev/sdb1 /data4 ext3 defaults 1 2 # 用真實分區掛載/dev/sdb2 /data4 ext3 noatime,defaults 1 2
第一個數字"1"該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不需要轉儲就設置該字段為0
第二個數字"2"該字段被fsck命令用來決定在啟動時需要被掃描的文件系統的順序,根文件系統"/"對應該字段的值應該為1,其他文件系統應該為2。若該文件系統無需在啟動時掃描則設置該字段為0
當以 noatime 選項加載(mount)文件系統時,對文件的讀取不會更新文件屬性中的atime信息。設置noatime的重要性是消除了文件系統對文件的寫操作,文件只是簡單地被系統讀取。由于寫操作相對讀來說要更消耗系統資源,所以這樣設置可以明顯提高服務器的性能.wtime信息仍然有效,任何時候文件被寫,該信息仍被更新
raid原理與區別
raid0至少2塊硬盤.吞吐量大,性能好,同時讀寫,但損壞一個就完蛋raid1至少2塊硬盤.相當鏡像,一個存儲,一個備份。安全性比較高.但是性能比0弱raid5至少3塊硬盤.分別存儲校驗信息和數據,壞了一個根據校驗信息能恢復raid6至少4塊硬盤.兩個獨立的奇偶系統,可壞兩塊磁盤,寫性能非常差
七、用戶
users # 顯示所有的登錄用戶
groups # 列出當前用戶和他所屬的組
who -q # 顯示所有的登錄用戶
groupadd # 添加組
useradd user # 建立用戶
passwd 用戶 # 修改密碼
userdel -r # 刪除帳號及家目錄
chown -r user:group # 修改目錄擁有者(r遞歸)
chown y\.li:mysql # 修改所有者用戶中包含點"."
umask # 設置用戶文件和目錄的文件創建缺省屏蔽值
chgrp # 修改用戶組
finger # 查找用戶顯示信息
echo "xuesong" | passwd user --stdin # 非交互修改密碼
useradd -g www -m -s /sbin/nologin www # 指定組并不允許登錄的用戶,nologin允許使用服務
useradd -g www -m -s /bin/false www # 指定組并不允許登錄的用戶,false最為嚴格
usermod -l 新用戶名 老用戶名 # 修改用戶名
usermod -g user group # 修改用戶所屬組
usermod -d 目錄 -m 用戶 # 修改用戶家目錄
usermod -g group user # 將用戶添加到附加組
gpasswd -d user group # 從組中刪除用戶
su - user -c " #命令1; " # 切換用戶執行