工做了幾年,常常會使用到一些Linux命令,時間長了也會忘。簡單整理了一下,也能加深記憶。如下均爲我的平時使用到的一些基本命令,若有紕漏,歡迎隨時指正。java
後面打算把Linux服務器性能監控的一些經常使用命令整理分享,歡迎你們關注。 原文連接mysql
#顯示隱藏文件
ls -la
#易讀方式顯示文件大小
ls -lh
#按最後修改時間顯示
ls -lt
#創建軟連接
ln -s /folder /folder_via_soft_link
#重命名文件,搜索帶2015的文件,重命名爲2017
rename 2015 2017 *2015*
#比較兩個文件
diff -w file1.txt file2.txt
#一次查看多個文件內容,先file1,再file2
cat file1 file2
#-n 加上行號
cat -n file
#刪除文件前先確認,-i,確認
rm -i filename
#拷貝文件1到文件2,保持文件的權限、屬組、時間戳
cp -p file1 file2
#刪除非空文件夾
rm -rf *2014*
#刪除文件後空間不釋放,lsof(list open files)
lsof | grep delete
#刪除軟連接
rm -rf /target
#建立目錄
mkdir -p /dir1/dir2/dir3
複製代碼
#查詢文件夾大小
AIX:du -sg dirname
Linux: du -sh dirname
#按照文件大小,從大到小排序,按照大小排序的話不要加h參數
du -s *|sort -nr|head
複製代碼
#壓縮test文件夾
tar cvf test.tar test/
#查看tar包內容
tar tvf test.tar
#gzip壓縮成gz文件
gzip filename
#解壓gz
gzip -d file.gz
#顯示壓縮ratio
gzip -l file.gz
複製代碼
#不區分大小寫
find ./ -iname *keywords*
#找到文件,執行命令
find ./ -iname *keywords* -exec md5sum {} ;
#刪除建立時間大於30天的文件
find ./ -name *keywords* -type f -ctime +30 -exec rm -fr {} ;
#使用xargs解決文件列表過長
find /dirname/ -name "*201410*" |xargs -n 100 rm {} ;
#查詢大文件,單位Kb
find ./ -size +500 -exec ls -lh {} ;
#文本中查找,不區分大小寫
grep -i "keywords" filename
#在文件夾中遞歸查找匹配關鍵字的
grep -r "keywords" *
#grep中實現or操做:尋找mysql與java進程,打印出pid與最後一列
ps -ef|grep 'mysql\|java'|awk '{print $2, $NF}'
複製代碼
#sed = stream editor
#-n 只打印匹配的行
sed -n '2p' filename #第2行
sed -n "1000,1200p" filename #1000~1200行
#打印匹配字段的行
sed -n '/kw1/p' filename
#截取兩個字符串之間的內容
sed -n '/kw1/,/kw2/p' filename
#example:編輯bin文件,將字段替換生成新文件
cat XX_1030.bin | sed -e 's/20141030/20141031/g' > xx_1031.bin
複製代碼
#格式化輸出
awk '{print $1,$4}' test.txt #顯示文件一、4列
#與ps命令結合
ps -ef|grep java|awk '{print $1,$2}'
#打印出最後一列,使用用$NF
ps -ef|grep 'mysql\|java'|awk '{print $2, $NF}'
#kill掉java進程
kill -9 `ps -ef|grep java |awk '{print $2}'`
#正則匹配:輸出第二列包含you的行,並打印第一列,第二列;~模式開始,//內是模式
awk '$2 ~ /you/ {print $1,$2}' test.txt
#計算文件大小
ls -l *.txt |awk '{sum+=$5} END {print sum}'
df -m|awk '{sum+=$2} END {print sum}'
#參數-F 按照後面字段進行分割
cat /etc/passwd |awk -F ':' '{print $1}'
cat /etc/passwd |awk -F ':' '{print $1" "$6}'
複製代碼
vim 編輯器命令實在太豐富,這裏簡單列舉幾個linux
#打開文件跳到第一個匹配的行
vim +/search_pattern filename
#只讀模式打開
vim -R filename
#替換全部匹配文本,命令模式
%s/old/new/g
複製代碼
#查看全部的網絡接口和狀態
ifconfig -a
#使用up、down啓動或者中止某個接口
ifconfig eth1 down
#查看網絡配置
ifconfig |egrep "HWaddr|inet addr"
#查看路由表
route
#向DNS服務器查詢域名,默認爲UDP,可經過輸入set vc改成TCP形式(性能影響較大)
nslookup
#ping,發送5個數據包
ping -c 5 ip
#查詢端口狀態
netstat -an|grep 3306
#域名解析
配置文件:/etc/resolv.conf
加入dns服務器
nameserver 192.168.2.206
#查看帶寬,root用戶
ethtool eth1
Settings for eth1:
Speed: 10000Mb/s
#每1s刷新監控eth1網卡上的流量狀況
watch -n 1 "ifconfig eth1|grep bytes"
#tcpdump抓包,文件可用wireshark分析
#-i 網卡;-s size
#解決:Package size limited during capture,加參數 -s0 能夠抓取任意長度的數據包
tcpdump host 192.168.2.206 -s0 -w /tmp/net.pcap #抓取全部與hostip之間的網絡包,保存爲文件
#下載文件到本地
wget --ftp-user=administrator --ftp-password=000000 ftp://192.168.2.206/source/app.out
複製代碼
#Linxu查看版本、系統信息
uname -a
cat /proc/version
lsb_release -a
#suse版本查詢
more /etc/SuSE-release
#AIX查詢配置
prtconf
#cpu查詢
cat /proc/cpuinfo
#查看虛擬CPU分配(AIX)
lparstat -i
#內存,用MB顯示結果
free -m
cat /proc/meminfo
複製代碼
#更改密碼
passwd
#root更換其餘用戶密碼,或者建立新用戶
passwd username
#Linux解鎖用戶,AIX使用smitty便可
faillog -u username -r
#Linux新建用戶
groupadd -g gid groupname #創建用戶組,gid,組名
useradd -d /homedir -g gid -u uid -p #創建用戶 home 組 uid 輸入密碼
#ssh登錄
ssh -l username hostname
#用指定用戶執行命令,執行完返回原帳戶
su - user -c 'ls'
#查詢歷史命令
history n
#查看當前的環境變量
export
#查看和java有關的環境變量,-i通常都是ignore忽略大小寫的意思
export |grep -i JAVA
#查看特定用戶的進程
top -u mysql
#修改權限,—R遞歸修改子目錄
chown -R mysql /mysql
chgrp -R mysql /mysql
or:chown -R mysql:mysql *
#用戶profile相關
設置當前用戶的 .profiles 文件, 進而後 cat ~/.profile 入到 etc 目錄,
其實就是進入當前目錄的home目錄,而後ls -a 就有.profile 文件
#修改用戶home
Step1:修改對應的/etc/passwd
Step2:usermod -d /userhome username
複製代碼
#關閉系統當即關機
shutdown -h now
#10分鐘後關機
shutdown -h +10
#重啓
shutdown -r now
#重啓期間強制進行系統檢查
shutdown -Fr now
複製代碼
#安裝
rpm -ivh xxx.rpm
#更新
rpm -uvh xxx.rpm
#卸載
rmp -ev httpd
#編譯安裝
./configure #檢查依賴,配置編譯項
make #編譯
make install #安裝
複製代碼
#查看服務狀態
service ssh status
#查看全部服務狀態,root權限
service --status-all
#啓動telnet服務
service xinetd restart
#啓動ftp服務
service vsftpd start
#nfs啓動(linux)
rcnfsserver status
rcnfsserver start
service nfs start
#linux設置共享目錄
編輯/etc/exports
showmount -e 192.168.2.206 #檢查server共享目錄
複製代碼
最重要的一個命令,要學會看官方手冊git
#whatis
whatis shutdown
shutdown (3p) - shut down socket send and receive operations
shutdown (8) - bring the system down
shutdown (2) - shut down part of a full-duplex connection
#指定特定版本的manual
man 3p shutdown
#查看某個命令的位置
whereis ls
#查看某個命令的描述
whatis ls
複製代碼
#修改 /etc/profile,全局生效
#修改用戶$HOME/.profile 對當前用戶生效
JAVA_BIN=/usr/jdk/jdk1.6.0_16/bin
export JAVA_BIN
JAVA_HOME=/usr/jdk/jdk1.6.0_16
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
. /etc/profile 生效
複製代碼
#查看指定用戶的crontab
crontab -u root -l
Linux:5,10,15,20,25,30,35,40,45,50,55,0 * * * * /usr/sbin/sntp -P no -r 192.168.2.206
AIX:0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/sbin/ntpdate 192.168.2.206
複製代碼