文件編輯操作命令
-----------------------------------------------------------------
在vi中查找字符串的方法如下:
1、命令模式下輸入“/字符串”,例如“/Section 3”。
2、如果查找下一個,按“n”即可。
要自當前光標位置向上搜索,請使用以下命令:
/pattern Enter
其中,pattern表示要搜索的特定字符序列。
要自當前光標位置向下搜索,請使用以下命令:
?pattern Enter
按下 Enter鍵後,vi 將搜索指定的pattern,並將光標定位在 pattern的第一個字符處。
參考資料地址:http://www.server110.com/linux/201404/10603.html
---------------------------------------------------------------------------------------
按下Insert鍵,可以見到窗口左下角有“Insert”字樣,表示當前爲插入編輯狀態,這時從鍵盤輸入的內容將插入到光標位置;再按下Insert鍵,左下角將有“Replace”字樣,表示當前爲替換編輯狀態,這時從鍵盤輸入的內容將替換光標位置的內容。
參考自;http://product.pconline.com.cn/itbk/software/linux/1311/3759019.html
--------------------------------------------------------------------------------------------
編輯文件後,先按esc,
a.若用戶就是不想保存被修改後的文件而要強行退出Vi時,可使用命令 :q!
Vi放棄所作修改而直接退到shell下;
b.輸入命令 :wq,Vi將先保存文件,然後退出Vi返回到shell。
c.連按兩次大寫字母Z,若當前編輯的文件曾被修改過,則Vi保存該文件後退出,返回到shell;
若當前編輯的文件沒被修改過,則Vi直接退出, 返回到shell;
d.輸入命令 :w
Vi保存當前編輯文件,但並不退出,而是繼續等待用戶輸入命令。在使用w命令時,可以再給編輯文件起一個新的文件名。 :w newfile此時Vi將把當前文件的內容保存到指定的newfile中,而原有文件保持不變。若newfile是一個已存在的文件,則Vi在顯示窗口的狀態行給出提示信息:
File exists (use ! to override)
此時,若用戶真的希望用文件的當前內容替換newfile中原有內容,可使用命令
:w! newfile
否則可選擇另外的文件名來保存當前文件。
e.輸入命令 :q
系統退出Vi返回到shell。若在用此命令退出Vi時,編輯文件沒有被保存,則Vi在顯示窗口的最末行顯示如下信息:
No write since last change (use ! to overrides)
其它常見命令
1.移動文件夾的命令:cp -r /usr/local/www/vhosts /var/ftp/pub
2.切換用戶
inux系統中用戶切換的命令爲su,語法爲:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
參數說明
-f , –fast:不必讀啓動文件(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , –login:加了這個參數之後,就好像是重新登陸一樣,大部分環境變量(例如HOME、SHELL和USER等)都是以該使用者(USER)爲主,並且工作目錄也會改變。如果沒有指定USER,缺省情況是root。
-m, -p ,–preserve-environment:執行su時不改變環境變數。
-c command:變更賬號爲USER的使用者,並執行指令(command)後再變回原來使用者。
–help 顯示說明文件
–version 顯示版本資訊
USER:欲變更的使用者賬號,
ARG: 傳入新的Shell參數。
2. su [user] 和 su - [user]的區別:su [user]切換到其他用戶,但是不切換環境變量,su - [user]則是完整的切換到新的用戶環境。
3.搜索文件
find . -maxdepth 1 -name "@*"
這個命令意思是,查找當前目錄下以@開頭的文件或者目錄,搜索深度爲一級也就是隻在當前目錄找,不進入子目錄,如果你要從/目錄開始找就:
find / -maxdepth 1 -name "@*"
如果想搜全盤,就把-maxdepth 1 去掉
4.自動安裝軟件
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可選的,選項包括-h(幫助),-y(當安裝過程提示選擇全部爲"yes"),-q(不顯示安裝的過程)等等。[command]爲所要進行的操作,[package ...]是操作的對象。(參考自:http://blog.csdn.net/wuwenxiang91322/article/details/20076985)
比如:
yum install zabbix20-server zabbix20-agent zabbix20-web-mysql nmap httpd policycoreutils-python net-snmp net-snmp-utils
zabbix20-server zabbix20-agent zabbix20-web-mysql nmap httpd policycoreutils-python net-snmp net-snmp-utils
5.壓縮解壓文件
.tar
解壓:tar zxvf FileName.tar
壓縮:tar czvf FileName.tar DirName
.gz
解壓1:gunzip FileName.gz 解壓2:gzip -d FileName.gz
壓縮:gzip FileName
.tar.gz 和 .tgz
解壓:tar zxvf FileName.tar.gz
壓縮:tar zcvf FileName.tar.gz DirName
tar zcvf oicqzone.tar.gz oicqzone --exclude oicqzone/data
tar zcvf oicqzone.tar.gz oicqzone --exclude oicqzone/data1 --exclude oicqzone/data2 --excludeoicqzone/ data3
前面一句是壓縮打包文件夾oicqzone爲oicqzone.tar.gz,不包含oicqzone文件夾下的data文件夾。
後面一句是壓縮打包文件夾oicqzone爲oicqzone.tar.gz,不包含oicqzone文件夾下的data1 data2 data3文件夾。
linux 的tar 命令打包制定目錄下的所有文件,卻不想包含目錄,舉例:
tar -czvf /test/data.tar.gz */ 中間是你打包的文件名,最後“*/”表示將/some/file/中的文件全部打包
.bz2
解壓1:bzip2 -d FileName.bz2 解壓2:bunzip2 FileName.bz2
壓縮: bzip2 -z FileName
.tar.bz2
解壓:tar jxvf FileName.tar.bz2
壓縮:tar jcvf FileName.tar.bz2 DirName
.bz
解壓1:bzip2 -d FileName.bz
解壓2:bunzip2 FileName.bz
壓縮:未知
.tar.bz
解壓:tar jxvf FileName.tar.bz
壓縮:未知
.Z
解壓:uncompress FileName.Z
壓縮:compress FileName
.tar.Z
解壓:tar Zxvf FileName.tar.Z
壓縮:tar Zcvf FileName.tar.Z DirName
.zip
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
.rar
解壓:rar a FileName.rar
壓縮:r ar e FileName.rar
解壓後請將rar_static拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以):
[root@www2 tmp]# cp rar_static /usr/bin/rar
.lha
解壓:lha -e FileName.lha
壓縮:lha -a FileName.lha FileName
》解壓後請將lha拷貝到/usr/bin目錄(其他由$PATH環境變量指定的目錄也可以):
[root@www2 tmp]# cp lha /usr/bin/
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
--------------------------------------------------------------------------------
自動安裝jdk
Oracle官網上下載jdk,需要點擊accept licence的才能下載,使用下面的命令,直接可以下載。
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u71-b14/jdk-7u71-linux-x64.rpm
然後運行如下命令自動安裝jdk:
rpm -ivh jdk-7u71-linux-x64.rpm
--------------------------------------------------------------------------
安裝ant
1、從http://ant.apache.org 上下載tar.gz版ant
2、複製到/usr下
3、tar -vxzf apahce-ant-1.9.2-bin.tar.gz 解壓
4、chown -R yjdabc apahce-ant-1.9.2 改變權限
chown -R :users apahce-ant-1.9.2
chmod -R +x apahce-ant-1.9.2
5、vi /etc/profile 修改系統配置文件
#set Ant enviroment
export ANT_HOME=/usr/apache-ant-1.9.2
export PATH=$PATH:$ANT_HOME/bin
6、source /etc/profile 立刻將配置生效
7、ant -version 測試ant是否生效
執行:
ant -buildfile /usr/demo/build.xml init
表示運行build.xml 中名字爲init的target
------------------------------------------------------------------
防火牆
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #開啓8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重啓服務
查看端口是否已經開放
/etc/init.d/iptables status
如果linux不使用iptables(centos 7默認的 firewall),而是使用firewall進行端口開放:
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)
防火牆白名單設置:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.86.6.202" port protocol="tcp" port=9952 accept"
firewall-cmd --reload
---------------------------------------------------------------
netstat -apn|grep 80
tcp 0 0 10.65.42.27:80 172.22.142.20:62771 ESTABLISHED6426/lighttpd
爲上面標紅顯示
kill -9 6426
--------------------------------------------------
linux下生成ssh密鑰對(使用默認的路徑)
cd ~/.ssh
ssh-keygen -t rsa -C "[email protected]"
接下來點擊enter鍵默認方式生成
---------------------------------------------------------------
查找文件
2.查找文件名中包含某字符(如"elm")的文件
find /home/lijiajia/ -name '*elm*'
find /home/lijiajia/ -name 'elm*'
find /home/lijiajia/ -name '*elm'
3.根據文件的特徵進行查詢
find /home/lijiajia/ -amin -10 #查找在系統中最後10分鐘訪問的文件
find /home/lijiajia/ -atime -2 #查找在系統中最後48小時訪問的文件
find /home/lijiajia/ -empty #查找在系統中爲空的文件或者文件夾
find /home/lijiajia/ -group cat # 查找在系統中屬於groupcat 的文件(試了,命令不對。)
find /home/lijiajia/ -mmin -5 # 查找在系統中最後5 分鐘裏修改過的文件
find /home/lijiajia/ -mtime -1 #查找在系統中最後24 小時裏修改過的文件
find /home/lijiajia/ -nouser #查找在系統中屬於作廢用戶的文件(不明白是什麼意思)
find /home/lijiajia/ -amin 10 #查找在系統中最後10分鐘訪問的文件
find /home/ftp/pub -user lijiajia #查找在系統中屬於lijiajia這個用戶的文件
(PS:以上都是在 /home/lijiajia/文件夾下進行的操作)
-------------------------------------------------------------------------------------------
進程操作
通過進程名查看進程情況
ps -ef | grep openfire
通過pid看端口
netstat
-antup |
grep
2711
通過進程名關閉所有進程
kill -9 $(ps -ef | grep openfire | grep -v grep | gawk '$0 !~/grep/ {print $2}' | tr -s '\\n' ' ')
-------------------------------------------------------------
rpm操作
查找
<span style="color:#333333">通過 rpm -q <關鍵字> 可以查詢到rpm包的名字</span>
卸載
然後 調用 rpm -e <包的名字> 刪除特定rpm包
如果遇到依賴,無法刪除,使用 rpm -e --nodeps <包的名字> 不檢查依賴,直接刪除rpm包
如果恰好有多個包叫同樣的名字,使用 rpm -e --allmatches --nodeps <包的名字> 刪除所有相同名字的包, 並忽略依賴
------------------------------------------------------------
查看文件夾大小:
du -h --max-depth=1
參考自《Linux下查看文件和文件夾大小》
-------------------------------------------------------------
設置文件夾權限:
[root@localhost ~]# chmod 777 /home/user 注:僅把/home/user目錄的權限設置爲rwxrwxrwx
[root@localhost ~]# chmod -R 777 /home/user 注:表示將整個/home/user目錄與其中的文件和子目錄的權限都設置爲rwxrwxrwx
-----------------------------------------------------------------
TCP鏈接查詢
查看哪些IP連接本機
netstat -an
查看TCP連接數
1)統計80端口連接數
netstat -nat|grep -i "80"|wc -l
2)統計httpd協議連接數
ps -ef|grep httpd|wc -l
3)、統計已連接上的,狀態爲“established
netstat -na|grep ESTABLISHED|wc -l
4)、查出哪個IP地址連接最多,將其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
摘錄自《http://blog.csdn.net/he_jian1/article/details/40787269》
-----------------------------------------------------------------------------------
文件描述符數
1. 系統最大打開文件描述符數:/proc/sys/fs/file-max
查看
$ cat /proc/sys/fs/file-max
186405
設置
a. 臨時性
# echo 1000000 > /proc/sys/fs/file-max
b. 永久性:在/etc/sysctl.conf中設置
fs.file-max = 1000000
2. 進程最大打開文件描述符數:user limit中nofile的soft limit
a. 查看
$ ulimit -n
1700000
2. 設置
a. 臨時性:通過ulimit -Sn設置最大打開文件描述符數的soft limit,注意soft limit不能大於hard limit(ulimit -Hn可查看hard limit),另外ulimit -n默認查看的是soft limit,但是ulimit -n 1800000則是同時設置soft limit和hard limit。對於非root用戶只能設置比原來小的hard limit。
查看hard limit:
$ ulimit -Hn
1700000
設置soft limit,必須小於hard limit:
$ ulimit -Sn 1600000
2. 永久性:上面的方法只是臨時性的,註銷重新登錄就失效了,而且不能增大hard limit,只能在hard limit範圍內修改soft limit。若要使修改永久有效,則需要在/etc/security/limits.conf中進行設置(需要root權限),可添加如下兩行,表示用戶chanon最大打開文件描述符數的soft limit爲1800000,hard limit爲2000000。以下設置需要註銷之後重新登錄才能生效:
chanon soft nofile 1800000
chanon hard nofile 2000000
設置nofile的hard limit還有一點要注意的就是hard limit不能大於/proc/sys/fs/nr_open,假如hard limit大於nr_open,註銷後無法正常登錄。可以修改nr_open的值:
# echo 2000000 > /proc/sys/fs/nr_open
3. 查看當前系統使用的打開文件描述符數
[root@localhost bin]# cat /proc/sys/fs/file-nr
5664 0 186405
其中第一個數表示當前系統已分配使用的打開文件描述符數,第二個數爲分配後已釋放的(目前已不再使用),第三個數等於file-max。
4. 總結:
a. 所有進程打開的文件描述符數不能超過/proc/sys/fs/file-max
b. 單個進程打開的文件描述符數不能超過user limit中nofile的soft limit
c. nofile的soft limit不能超過其hard limit
d. nofile的hard limit不能超過/proc/sys/fs/nr_open
-----------------------------------------------------------------------------------
linux資源排查(cpu、內存、io)
查看某進程內存情況
1:使用 ps -ef|grep xxx 命令查找需要查看的進程,xxx是進程名字
2:top -p pid 查看程序的情況
3:ps -aux | grep process_name
4:cat /proc/pid/status
這裏會打印出當前進程詳細的情況,其中,內存是 VmRSS。
linux磁盤操作
1.查看linux分區格式掛載點:
df -hT
2.磁盤掛載
mount /dev/xvdb1 /mnt 掛載新分區,然後執行 df -h 查看分區
具體參考:《Linux 硬盤掛載》
tcpdump
tcpdump -i any -s0 host 192.168.1.45 -w "/user/local/packet/tcpdump.cap" & > /dev/null
- 抓取所有經過 eth1,目的網絡是 192.168,但目的主機不是 192.168.1.200 的 TCP 數據
# tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
- 只抓 SYN 包
# tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'
- 抓 SYN, ACK
# tcpdump -i eth1 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack != 0'
- 抓 DNS 請求數據
# tcpdump -i eth1 udp dst port 53
-同時不抓多個ip
tcpdump -i any -s0 port 5222 and not host 10.200.110.17 and not host 10.200.110.15 and not host 10.86.199.52 -w "/home/uc/packet/im_cap.cap" & > /dev/null
-------------------------------------------
轉自:http://151wqooo.blog.51cto.com/2610898/1162118
如果你想在當前目錄下 查找"hello,world!"字符串,可以這樣:
grep -rn "hello,world!" *
* : 表示當前目錄所有文件,也可以是某個文件名
-r 是遞歸查找
-n 是顯示行號
-R 查找所有文件包含子目錄
-i 忽略大小寫
下面是一些有意思的命令行參數:
grep -i pattern files :不區分大小寫地搜索。默認情況區分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。
後續補充...