1. crontab的使用
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。
-u user_a 是指設定指定 user_a 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設 定自己的時程表。
基本格式 :
* * * * * command
分 時 日 月 周 指令
第1清單示分鐘1~59 每分鐘用或者 /1表示
第2清單示小時1~23(0表示0點)
第3清單示日期1~31
第4清單示月份1~12
第5列辨別号星期0~6(0表示星期天)
第6列要運作的指令
常用指令:
添加任務: crontab -e
檢視任務: crontab -l
删除任務: crontab-d
使用權限 : 所有使用者
crontab 每分鐘、每小時、每天、每周、每月、每年定時執行
每五分鐘執行 /5 * * * commond
每小時執行 0 * * * * commond
每天執行 0 0 * * * commond
每周執行 0 0 * * 0 commond
每月執行 0 0 1 * * commond
每年執行 0 0 1 1 * commond
下面通過一些例子直覺學習下:
* * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重新開機apache。
,, * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重新開機apache。
* * , /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重新開機apache。
, - * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重新開機apache。
* * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的23 : 00 pm重新開機apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重新開機apache
* -/ * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重新開機apache
* mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号與每周一到周三的11點重新開機apache
jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4點重新開機apache
2.關閉sendmail服務,這裡介紹一種不用關閉sendmail服務的方法
vim /etc/profile
将 unset MAILCHECK 加到檔案最後
source /etc/profile
(但是試過之後沒效果)
3.查找檔案内容
查找目前目錄下所有檔案,将含有’test’的檔案列出
grep ‘test’ *
4.檢視硬碟的使用情況及檔案目錄大小指令
檢視檔案系統各個硬碟大小
df -a 列出所有的檔案系統
df -k 以K為機關顯示
df -h 以人性化機關顯示,可以是b,k,m,g,t..
檢視目錄的大小
du -sh dirname
-s 僅顯示總計
-h 以K、M、G為機關,提高資訊的可讀性。KB、MB、GB是以1024為換算單 位, -H以1000為換算機關。
例:du -sh /www
檢視www檔案夾大小
5.screen 指令詳解
背景
作為程式員一定會用到linux系統,經常打開多個shell,運作一些需要很長時間才能完成的任務,通常情況下我們都是為每一個這樣的任務開一個終端視窗,必須等待它們執行完畢,在此期間不能關掉視窗,否則這個任務就會被殺掉。
簡介
GNU Screen是一款由GNU計劃開發的用于指令行終端切換的自由軟體。使用者可以通過該軟體同時連接配接多個本地或遠端的指令行會話,并在其間自由切換。
GNU Screen可以看作是視窗管理器的指令行界面版本。它提供了統一的管理多個會話的界面和相應的功能
常用的screen 指令
screen -S yourname -> 建立一個叫yourname的session
screen -ls -> 列出目前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠端detach某個session
screen -d -r yourname -> 結束目前session并回到yourname這個session
常用快捷鍵組合
C-a c -> 建立一個新的運作shell的視窗并切換到該視窗
C-a n -> Next,切換到下一個 window
C-a p -> Previous,切換到前一個 window
C-a d -> detach,暫時離開目前session,将目前的 screen session丢到背景執行,并會回到還沒進 screen 時的狀态,此時在 screen session 裡,每個screen内運作的 process (無論是前台/背景)都在繼續執行,即使 logout 也不影響。
exit 關閉目前session
6.伺服器之間複制檔案
scp是securecopy的簡寫,用于在Linux下進行遠端拷貝檔案的指令,和它類似的指令有cp,不過cp隻是在本機進行拷貝不能跨伺服器
,而且scp傳輸是加密的,可能會稍微影響一下速度。
一般有6中用法:
1)本地複制遠端檔案(把遠端的檔案複制到本地):
scp [email protected]:/val/test/test.tar.gz /val/test/test.tar.gz
2)遠端複制本地檔案(把本地的檔案複制到遠端主機上):
scp /val/test.tar.gz [email protected]:/val/test.tar.gz
3)本地複制遠端目錄(把遠端的目錄複制到本地;參數 r 遞歸複制):
scp -r [email protected]:/val/test/ /val/test/
4)遠端複制本地目錄(把本地的目錄複制到遠端主機上):
scp -r /val/ [email protected]:/val/
5)本地複制遠端檔案到指定目錄(把遠端的檔案複制到本地):
scp [email protected]:/val/test/test.tar.gz /val/test/
6)遠端複制本地檔案到指定目錄(把本地的檔案複制到遠端主機上):
scp /val/test.tar.gz [email protected]:/val/
7.檢視CPU 機器型号 記憶體等資訊
系統
uname -a # 檢視核心/作業系統/CPU資訊
cat /proc/cpuinfo # 檢視CPU資訊
hostname # 檢視計算機名
env # 檢視環境變量
lsb_release -a #即可列出所有版本資訊
cat /etc/issue #檢視版本資訊
資源
free -h # 檢視記憶體使用量和交換區使用量
df -h # 檢視各分區使用情況
du -sh <目錄名> # 檢視指定目錄的大小
grep MemTotal /proc/meminfo # 檢視記憶體總量
grep MemFree /proc/meminfo # 檢視空閑記憶體量
uptime # 檢視系統運作時間、使用者數、負載
cat /proc/loadavg # 檢視系統負載
磁盤和分區
mount | column -t # 檢視挂接的分區狀态
fdisk -l # 檢視所有分區
swapon -s # 檢視所有交換分區
hdparm -i /dev/hda # 檢視磁盤參數(僅适用于IDE裝置)
dmesg | grep IDE # 檢視啟動時IDE裝置檢測狀況
網絡
ifconfig # 檢視所有網絡接口的屬性
iptables -L # 檢視防火牆設定
route -n # 檢視路由表
netstat -lntp # 檢視所有監聽端口
netstat -antp # 檢視所有已經建立的連接配接
netstat -s # 檢視網絡統計資訊
程序
ps -ef # 檢視所有程序
top # 實時顯示程序狀态
使用者
w # 檢視活動使用者
id <使用者名> # 檢視指定使用者資訊
last # 檢視使用者登入日志
cut -d: -f1 /etc/passwd #系統所有使用者
cut -d: -f1 /etc/group # 檢視系統所有組
crontab -l # 檢視目前使用者的計劃任務使用者
8.關閉防火牆
systemctl stop firewalld.service
關閉開機啟動: systemctl disable firewalld.service
檢視防火牆狀态: systemctl status firewalld.service
9.ssh 遠端登陸
ssh [email protected]
10.主機名相關
檢視: hostnamectl status
修改: hostnamectl set-hostname “storage_node1”
10.挂載硬碟
mount -t ext3 -o rw /dev/sdb1 /newfile #挂載硬碟
-t 跟磁盤格式 可以省略 系統會自動檢測一下
-o 跟挂載方式 rw 可讀可寫
/newfile 這是硬碟分區挂載的目錄,可以随意變換
11.lsof 使用以及修改系統程序打開的檔案數限制
該指令用于檢視程序或應用程式打開的檔案描述符資訊
輸出資訊
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
COMMAND:程序的名稱
PID:程序辨別符
USER:程序所有者
FD:檔案描述符,應用程式通過檔案描述符識别該檔案。如cwd、txt等
TYPE:檔案類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:檔案的大小
NODE:索引節點(檔案在磁盤上的辨別)
NAME:打開檔案的确切名稱
其中FD 列中的檔案描述符cwd 值表示應用程式的目前工作目錄,這是該應用程式啟動的目錄,除非它本身對這個目錄進行更改。
txt 類型的檔案是程式代碼,如應用程式二進制檔案本身或共享庫,其次數值表示應用 程式的檔案描述符,這是打開該檔案
時傳回的一個整數。
u 表示該 檔案被打開并處于讀取/寫入模式,而不是隻讀 ® 或隻寫 (w) 模式。同時還有大寫 的W表示該應用程式具有對整個檔案
的寫 鎖。該檔案描述符用于確定每次隻能打開一個應用程式執行個體。初始打開每個應用程式時,都具有三個檔案描述符,從 0 到
2, 分别表示标準輸入、輸出和錯誤流。是以大多數應用程式所打開的檔案的 FD 都是從 3 開始。
與 FD 列相比,Type 列則比較直覺。檔案和目錄分别稱為 REG 和 DIR。而CHR 和 BLK,分别表示字元和塊裝置;
或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先進先出 (FIFO) 隊列和網際協定 (IP) 套接字。
lsof filename 顯示打開指定檔案的所有程序
lsof -a 表示兩個參數都必須滿足時才顯示結果
lsof -c string 顯示COMMAND列中包含指定字元的程序所有打開的檔案
lsof -u username 顯示所屬user程序打開的檔案
lsof -g (-p)gid 顯示歸屬gid的程序情況
lsof +d /DIR/ 顯示目錄下被程序打開的檔案
lsof +D /DIR/ 同上,但是會搜尋目錄下的所有目錄,時間相對較長
lsof -d FD 顯示指定檔案描述符的程序
lsof -n 不将IP轉換為hostname,預設是不加上-n參數
lsof -i 用以顯示符合條件的程序情況
lsof -p 程序PID 檢視某特定程序打開的檔案描述符
lsof -a -p PID -d txt 篩選檔案描述符為 txt的記錄 參數 -a(and的意思)表示篩選兩個參數均滿足的記錄
lsof /home/test.py 查找打開某個檔案的應用程式
lsof |grep 33872 |wc -l 統計某程序打開的檔案描述符的數量
檢視本次登陸的session其檔案描述符的限制
ulimit -n
臨時修改檔案描述符的限定,可以通過 ulimit。
ulimit -SHn 2048
永久變更需要編輯 /etc/security/limits.conf 檔案,添加如下兩行:
在/etc/security/limits.conf修改限制的格式如下
domino type item value
參數 描述
domino 是以符号@開頭的使用者名或組名,*表示所有使用者
type 設定為hard or soft
item 指定想限制的資源。如cpu,core nproc or maxlogins
value 是相應的
* hard nofile 4096
* soft nofile 4096
儲存退出後重新登入,其最大檔案描述符已經被永久更改了
核心參數對檔案描述符也有限制,如果設定的值大于核心的限制,也是不行的:
查找file-max的核心參數:
sysctl -a|grep file-max
更改file-max的核心參數:
sysctl -w file-max=65535
Sysctl也是臨時的,要想永久生效,可以通過更改sysctl的檔案,編輯/etc/sysctl.conf檔案,添加或修改以下一行:
fs.file-max=65535
儲存退出後使用sysctl -p 指令使其生效
需要注意的是,檔案描述符的限制,不局限于這裡描述的這些,還可能和程序的啟動參數、使用者的環境設定有關。當然,如果是程序
BUG造成檔案描述符沒有及時關閉回收,這增大限制也隻是治标,根本上還得修複BUG。
此外,lsof會列出系統中所占用的資源,但是這些資源不一定會占用打開的檔案描述符(比如共享記憶體,信号量,消息隊列,記憶體映射.等
,雖然占用了這些資源,但不占用打開檔案号),是以有可能出現cat /proc/sys/fs/file-max 的值小于lsof | wc -l。
cat /proc/sys/fs/nr_open
單個程序可配置設定的最大檔案數
cat /proc/sys/fs/file-max
核心可配置設定的最大檔案數
所有程序打開的檔案描述符數不能超過 /proc/sys/fs/file-max
單個程序打開的檔案描述符數不能超過 user limit中 nofile的 soft limit
nofile的soft limit不能超過其hard limit
nofile的hard limit不能超過/proc/sys/fs/nr_open
12.修改系統時間
Linux時鐘分為系統時鐘(System Clock)和硬體(Real Time Clock,簡稱RTC)時鐘。
系統時鐘是指目前Linux Kernel中的時鐘,而硬體時鐘則是主機闆上由電池供電的時鐘,這個硬體時鐘可以在
BIOS中進行設定。當Linux啟動時,硬體時鐘會去讀取系統時鐘的設定,然後系統時鐘就會獨立于硬體運作。
Linux中的所有指令(包括函數)都是采用的系統時鐘設定。在Linux中,用于時鐘檢視和設定的指令主要有date、hwclock。
date –s:按字元串方式修改時間
可以隻修改日期,不修改時間,輸入:
隻修改時間,輸入:
同時修改日期時間,注意要加雙引号,日期與時間之間有一空格,輸入:
檢視硬體時間
hwclock
設定硬體時間
hwclock -set -date=”07/07/06 10:19” (月/日/年 時:分:秒)
硬體時間和系統時間的同步
按照前面的說法,重新啟動系統,硬體時間會讀取系統時間,實作同步,但是在不重新啟動的時候,需要用hwclock指令實作同步。
硬體時鐘與系統時鐘同步:
hwclock –hctosys (hc代表硬體時間,sys代表系統時間)
系統時鐘和硬體時鐘同步:(讓系統的時間同步到硬體時鐘)
hwclock -w ––systohc
13.壓縮檔案
tar -zcvf /home/sms.tar.gz /sms
tar -zcvf [打包後生成的檔案名全路徑] [要打包的目錄]
zip -q -r sms.zip /home/sms -q 表示安靜模式(在壓縮的時候不顯示指令的執行過程) -r表示遞歸
zip [參數] [打包後的檔案名] [打包的目錄路徑]
14. 檢視是否安裝某軟體
rpm -qa|grep soft_name
## 15.測試硬碟的IO
硬碟讀取速度
time dd if=/var/test of=/dev/null bs=2k
hdparm -T /dev/sda
硬碟寫入速度
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
(在 根目錄 / 下面會生成臨時檔案,記得删除)