工作排程種類
at 是個可以處理僅執行一次就結束排程的指令,不過要執行 at 時, 必須要有 atd 這個服務
crontab 設定的工作將會循環的一直進行!循環的時間為分、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。讓crontab可以啟動則是 crond 這個服務!
限制使用 crontab
/etc/cron.allow:不在這個檔案內的使用者則不可使用 crontab;
/etc/cron.deny: 將不可以使用 crontab 的帳號寫入其中
/etc/cron.allow 比 /etc/cron.deny 要優先,建議只要保留一個即可,系統預設是保留 /etc/cron.deny ,一個帳號一行!
工作排程紀錄
工作排程會被紀錄到 /var/spool/cron/ 而且以帳號來作為判別,不要使用 vi 直接編輯該檔案,
cron 執行的每一項工作都會被紀錄到 /var/log/cron 這個登錄檔中
語法
crontab [-u username] [-l|-e|-r]
選項與參數:
-u :幫其他使用者建立/移除 crontab 工作排程;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。
範例一:在每天的 12:00 發信給自己
crontab -e
# 此時會進入 vi 編輯工作!每項工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 時 日 月 週 |<==============指令串========================>|
週的數字為 0 或 7 時都代表『星期天』
*(星號) 代表任何時刻都接受的意思!
,(逗號) 代表分隔時段的意思。如工作時間是3點與6點時,就會是:0 3,6 * * * command
-(減號) 代表一段時間範圍內。8到12點的每小時20分都做一項工作:20 8-12 * * * command
/n(斜線) n代表數字,是每隔 n 單位間隔的意思,如每五分鐘一次,則:*/5 * * * * command
用 * 與 /5 來搭配,也可以寫成 0-59/5,相同意思!
系統的設定檔: /etc/crontab
『 crontab -e 』是針對使用者的 cron 來設計的,
『系統的例行性任務』,要編輯 /etc/crontab 這個檔案
crontab -e 這個 crontab 其實是 /usr/bin/crontab 這個執行檔
/etc/crontab 可是一個『純文字檔』喔!你可以 root 的身份編輯一下這個檔案哩!
cron 會每分鐘去讀取一次 /etc/crontab 與 /var/spool/cron
//------------------內容
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
//---------------------------------------------------------
說明:01 * * * * root run-parts /etc/cron.hourly:
以 root 的身份來進行的。
/usr/bin/run-parts 會將後面『目錄』內的所有檔案捉出來執行
下達『 ll /etc/cron.daily 』就可以看到一堆檔案, 那些檔案就是系統提供的 script
注意事項
資源分配不均
如果每個流程都在同一個時間啟動,那麼在某個時段,系統會變的相當繁忙,可以如此設定:
vi /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root CMD1
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root CMD2
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root CMD3
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root CMD4
,前後不要有空白
取消不要的輸出項目
如:DNS上層主機掛掉,就會一直收到錯誤訊息,可以『命令重導向』將輸出的結果輸出到 /dev/null
週與日月不可同時並存
2011年11月30日 星期三
工作排程-at
工作排程種類
at 是個可以處理僅執行一次就結束排程的指令,不過要執行 at 時, 必須要有 atd 這個服務
crontab 設定的工作將會循環的一直進行!循環的時間為分、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。讓crontab可以啟動則是 crond 這個服務!
at
sudo sysv-rc-conf atd on # 開啟 atd run level
語法:
at [-mldv] TIME
at -c 工作號碼
選項與參數:
-m :當at工作完成後,即使沒有輸出訊息,亦以 email 通知使用者該工作已完成。
-l :at -l 相當於 atq,列出目前系統上面的所有該使用者的 at 排程;
-d :at -d 相當於 atrm ,可以取消一個在 at 排程中的工作;
-v :可以使用較明顯的時間格式列出 at 排程中的工作列表;
-c :可以列出後面接的該項工作的實際指令內容。
TIME:什麼時候要進行 at 這項工作,格式有:
HH:MM (04:00) 在今日某時刻進行,若已超過,則明天的時間進行
HH:MM YYYY-MM-DD (04:00 2009-03-17)
HH:MM[am|pm] [Month] [Date] (04pm March 17)
HH:MM[am|pm] + number [minutes|hours|days|weeks] ( now + 5 minutes, 04pm + 3 days)
例:一
at now + 5 minutes
進入編輯畫面
[ctrl] + d 就會出現 <EOF> 的字樣!代表結束!
job 1 at Wed Nov 30 22:27:00 2011 //編輯結束後,顯示第幾工作
範例二:將上述的第 1 項工作內容列出來查閱
at -c 1
範例三:於某時間關機
at 23:00 2011-03-17
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 2 at Wed Nov 30 22:39:00 2011
使用 at 時會進入一個 at shell 的環境來下達工作指令,此時,最好使用絕對路徑來下達指令,比較不會有問題喔
atq
查詢目前主機上面有多少的 at 工作排程?
atrm 將第()個工作移除!
atrm 5 將的第 5 個工作移除!
batch:系統有空時才進行背景任務
batch 是利用 at 來進行指令的下達啦!只是加入一些控制參數而已。
安全設定
先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中);
如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at
如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令。
at 是個可以處理僅執行一次就結束排程的指令,不過要執行 at 時, 必須要有 atd 這個服務
crontab 設定的工作將會循環的一直進行!循環的時間為分、小時、每週、每月或每年等。crontab 除了可以使用指令執行外,亦可編輯 /etc/crontab 來支援。讓crontab可以啟動則是 crond 這個服務!
at
sudo sysv-rc-conf atd on # 開啟 atd run level
語法:
at [-mldv] TIME
at -c 工作號碼
選項與參數:
-m :當at工作完成後,即使沒有輸出訊息,亦以 email 通知使用者該工作已完成。
-l :at -l 相當於 atq,列出目前系統上面的所有該使用者的 at 排程;
-d :at -d 相當於 atrm ,可以取消一個在 at 排程中的工作;
-v :可以使用較明顯的時間格式列出 at 排程中的工作列表;
-c :可以列出後面接的該項工作的實際指令內容。
TIME:什麼時候要進行 at 這項工作,格式有:
HH:MM (04:00) 在今日某時刻進行,若已超過,則明天的時間進行
HH:MM YYYY-MM-DD (04:00 2009-03-17)
HH:MM[am|pm] [Month] [Date] (04pm March 17)
HH:MM[am|pm] + number [minutes|hours|days|weeks] ( now + 5 minutes, 04pm + 3 days)
例:一
at now + 5 minutes
進入編輯畫面
[ctrl] + d 就會出現 <EOF> 的字樣!代表結束!
job 1 at Wed Nov 30 22:27:00 2011 //編輯結束後,顯示第幾工作
範例二:將上述的第 1 項工作內容列出來查閱
at -c 1
範例三:於某時間關機
at 23:00 2011-03-17
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 2 at Wed Nov 30 22:39:00 2011
使用 at 時會進入一個 at shell 的環境來下達工作指令,此時,最好使用絕對路徑來下達指令,比較不會有問題喔
atq
查詢目前主機上面有多少的 at 工作排程?
atrm 將第()個工作移除!
atrm 5 將的第 5 個工作移除!
batch:系統有空時才進行背景任務
batch 是利用 at 來進行指令的下達啦!只是加入一些控制參數而已。
安全設定
先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中);
如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at
如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令。
2011年11月25日 星期五
紀錄檔
rsyslog 利用的是 daemon 的方式來啟動, 有需求的時候立刻執行
logrotate 在規定的時間到了之後進行登錄檔的輪替, 是掛在 cron 底下進行!/etc/cron.daily/logrotate
rsyslog:
使用一個預設設定檔,於設定檔的尾端,以 include 的方式,將其他設定檔載入
/etc/rsyslog.conf →預設設定檔,(不在這個檔案調整)
/etc/rsyslog.d/*→各別設定檔,(在這目錄下調整),這目錄下的預設檔是 50-default.conf,且依套件不同而新增不同設定,設定檔裡檔案名稱前有-號表示紀錄不會馬上存入檔案中,若為重要紀錄檔前面可不加-。
/etc/rsyslog.d/設定檔格式
訊息的種類.嚴重性 動作
訊息種類
auth (authpriv) 與認證有關的機制
cron 例行性工作排程
daemon 與各個 daemon 有關的
kern 與核心 (kernel) 相關的
lpr 與列印相關的
mail 與郵件收發相關的
mark
news 與新聞群組服務相關的
security(same as auth)
syslog syslogd 本身的
user, uucp, local0 ~ local7 與 Unix like 機器本身有關的
訊息等級
訊息等級 代號 說明
1 info 一些基本的訊息說明
2 notice 比 info 還需要被注意到的一些資訊內容
3 warning (warn) 警示的訊息,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾
4 err (error) 一些重大的錯誤訊息
5 crit 比 error 還要嚴重的錯誤資訊
6 alert 警告,已經很有問題的等級,比 crit 還要嚴重
7 emerg (panic) 系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊。通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息
debug 錯誤偵測等級
none 不需登錄
符號說明
. 表示比指定的訊息等級高的(包含本身)都會記錄
.= 指記錄指定的訊息等級
.! 只有只定的訊息等級不記錄,其餘皆要
如果有多個種可用,隔開,或用*代表全部
多個種類嚴重性不全相目,但要相同動作,可用;隔開
動作:寫到記錄檔,可能方式
本機檔案 如:/var/log/mailog
終端機 如:/dev/console, /dev/pts/0
遠端電腦 如:@hostname
使用者列表
所有登入的使用者
logrotate
將舊的登錄檔案移動成舊檔, 並且重新建立一個新的空的檔案來記錄
設定檔
/etc/logrotate.conf 主要的參數檔案
/etc/logrotate.d/ 是一個目錄, 該目錄裡面的所有檔案都會被主動的讀入
在 /etc/logrotate.d/ 裡面的檔案中,如果沒有設定,則以/etc/logrotate.conf 這個檔案為預設值!
logrotate [-vf] logfile選項與參數:
-d:開啟除錯模式
-v:啟動顯示模式,會顯示 logrotate 運作的過程喔!
-f:不論是否符合設定檔的規定,強制每個登錄檔都進行 rotate 的動作!
-m: 寄信,告訴logrotate用什麼指令去寄出紀錄檔,預設/bin/mail -s
--usage 列出使用狀態
-s 狀態。告訴logrotate使用一個交換狀態的記錄檔,當我們使用不同的帳號來設定多樣的紀錄檔,這是有用的。預設狀態紀錄在:/var/lib/logrotate/status
執行 logrotate 看看整個流程
logrotate -v /etc/logrotate.conf
強制進行 logrotate 的動作
logrotate -vf /etc/logrotate.conf
//-----------------------------------
log 檔的語法
log 檔的絕對路徑 { 參數 }
weekly 或 monthly → rotate 的頻率
rotate 數值 → 保留幾個 log 檔
create → 建立新的 log 檔
minsize 數值M → 超過幾 M 才備份 rotate
compress → rotate 時進行壓縮
prerotate:在啟動 logrotate 之前進行的指令,例如修改登錄檔的屬性等動作;
postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -HUP) 某個服務!
prerotate 與 postrotate 對於已加上特殊屬性的檔案處理上面,是相當重要的執行程序!
//------------------------------------
/etc/logrotate.conf 檔案
# see "man logrotate" for details
# rotate log files weekly(每週產生新記錄)
weekly
# keep 4 weeks worth of backlogs(保留四週的備份期)
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
//記錄正確登入系統者的帳號資訊
/var/log/wtmp { //到哪個路徑去抓哪個 log 檔案;
missingok // 如果找不到這個 log 檔案,就忽略過去,繼續執行下一個 logrotate 工作;
monthly
create 0664 root utmp //建立一個新的 log 檔案,並且設定權限與擁有者。
rotate 1
}
logrotate 是設定在 crond 的服務之下的,所以如果 crond 沒跑起來,那 logrotate 也就不會動作囉,要確定 logrotate 是不是有加入到 crond 的排程中,可以去 /etc/crontab 這個檔案或者是到 /etc/cron.daily/ 這個目錄底下來看看是不是有 logrotate 這個程序。
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
//-------------------------------------------------------
/var/run/utmp 記錄著現在登入的用戶。
/var/log/wtmp 記錄所有的登入和登出。
/var/log/lastlog 記錄每個用戶最後的登入信息。
/var/log/btmp 記錄錯誤的登入嘗試。
logrotate 在規定的時間到了之後進行登錄檔的輪替, 是掛在 cron 底下進行!/etc/cron.daily/logrotate
rsyslog:
使用一個預設設定檔,於設定檔的尾端,以 include 的方式,將其他設定檔載入
/etc/rsyslog.conf →預設設定檔,(不在這個檔案調整)
/etc/rsyslog.d/*→各別設定檔,(在這目錄下調整),這目錄下的預設檔是 50-default.conf,且依套件不同而新增不同設定,設定檔裡檔案名稱前有-號表示紀錄不會馬上存入檔案中,若為重要紀錄檔前面可不加-。
/etc/rsyslog.d/設定檔格式
訊息的種類.嚴重性 動作
訊息種類
auth (authpriv) 與認證有關的機制
cron 例行性工作排程
daemon 與各個 daemon 有關的
kern 與核心 (kernel) 相關的
lpr 與列印相關的
mail 與郵件收發相關的
mark
news 與新聞群組服務相關的
security(same as auth)
syslog syslogd 本身的
user, uucp, local0 ~ local7 與 Unix like 機器本身有關的
訊息等級
訊息等級 代號 說明
1 info 一些基本的訊息說明
2 notice 比 info 還需要被注意到的一些資訊內容
3 warning (warn) 警示的訊息,可能有問題,但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾
4 err (error) 一些重大的錯誤訊息
5 crit 比 error 還要嚴重的錯誤資訊
6 alert 警告,已經很有問題的等級,比 crit 還要嚴重
7 emerg (panic) 系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊。通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息
debug 錯誤偵測等級
none 不需登錄
符號說明
. 表示比指定的訊息等級高的(包含本身)都會記錄
.= 指記錄指定的訊息等級
.! 只有只定的訊息等級不記錄,其餘皆要
如果有多個種可用,隔開,或用*代表全部
多個種類嚴重性不全相目,但要相同動作,可用;隔開
動作:寫到記錄檔,可能方式
本機檔案 如:/var/log/mailog
終端機 如:/dev/console, /dev/pts/0
遠端電腦 如:@hostname
使用者列表
所有登入的使用者
logrotate
將舊的登錄檔案移動成舊檔, 並且重新建立一個新的空的檔案來記錄
設定檔
/etc/logrotate.conf 主要的參數檔案
/etc/logrotate.d/ 是一個目錄, 該目錄裡面的所有檔案都會被主動的讀入
在 /etc/logrotate.d/ 裡面的檔案中,如果沒有設定,則以/etc/logrotate.conf 這個檔案為預設值!
logrotate [-vf] logfile選項與參數:
-d:開啟除錯模式
-v:啟動顯示模式,會顯示 logrotate 運作的過程喔!
-f:不論是否符合設定檔的規定,強制每個登錄檔都進行 rotate 的動作!
-m: 寄信,告訴logrotate用什麼指令去寄出紀錄檔,預設/bin/mail -s
--usage 列出使用狀態
-s 狀態。告訴logrotate使用一個交換狀態的記錄檔,當我們使用不同的帳號來設定多樣的紀錄檔,這是有用的。預設狀態紀錄在:/var/lib/logrotate/status
執行 logrotate 看看整個流程
logrotate -v /etc/logrotate.conf
強制進行 logrotate 的動作
logrotate -vf /etc/logrotate.conf
//-----------------------------------
log 檔的語法
log 檔的絕對路徑 { 參數 }
weekly 或 monthly → rotate 的頻率
rotate 數值 → 保留幾個 log 檔
create → 建立新的 log 檔
minsize 數值M → 超過幾 M 才備份 rotate
compress → rotate 時進行壓縮
prerotate:在啟動 logrotate 之前進行的指令,例如修改登錄檔的屬性等動作;
postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -HUP) 某個服務!
prerotate 與 postrotate 對於已加上特殊屬性的檔案處理上面,是相當重要的執行程序!
//------------------------------------
/etc/logrotate.conf 檔案
# see "man logrotate" for details
# rotate log files weekly(每週產生新記錄)
weekly
# keep 4 weeks worth of backlogs(保留四週的備份期)
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
//記錄正確登入系統者的帳號資訊
/var/log/wtmp { //到哪個路徑去抓哪個 log 檔案;
missingok // 如果找不到這個 log 檔案,就忽略過去,繼續執行下一個 logrotate 工作;
monthly
create 0664 root utmp //建立一個新的 log 檔案,並且設定權限與擁有者。
rotate 1
}
logrotate 是設定在 crond 的服務之下的,所以如果 crond 沒跑起來,那 logrotate 也就不會動作囉,要確定 logrotate 是不是有加入到 crond 的排程中,可以去 /etc/crontab 這個檔案或者是到 /etc/cron.daily/ 這個目錄底下來看看是不是有 logrotate 這個程序。
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
//-------------------------------------------------------
/var/run/utmp 記錄著現在登入的用戶。
/var/log/wtmp 記錄所有的登入和登出。
/var/log/lastlog 記錄每個用戶最後的登入信息。
/var/log/btmp 記錄錯誤的登入嘗試。
時間和時區
設定時區
cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
顯示時間及日期
date
修改日期
date -s 5/20
修改時間
date -s 15:30
cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
顯示時間及日期
date
修改日期
date -s 5/20
修改時間
date -s 15:30
2011年11月24日 星期四
原始與二進位檔的安裝
原始檔必須先安裝 gcc 與 make
sudo apt-get install gcc
sudo apt-get install make
原始檔安裝程序
1. 下載原始檔 wget
2. 解壓縮並進入解開後的目錄
3. 執行 ./configure 設定參數
執行make 編譯成執行檔
4.執行 make install 將檔案與資料夾放到適當的位置(/etc ,/usr/bin/, /var/log/)
5.設定正確的權限
二進位檔案裝程序
1.下載
2. chmod 755 給予執行權
3. 執行
sudo apt-get install gcc
sudo apt-get install make
原始檔安裝程序
1. 下載原始檔 wget
2. 解壓縮並進入解開後的目錄
3. 執行 ./configure 設定參數
執行make 編譯成執行檔
4.執行 make install 將檔案與資料夾放到適當的位置(/etc ,/usr/bin/, /var/log/)
5.設定正確的權限
二進位檔案裝程序
1.下載
2. chmod 755 給予執行權
3. 執行
開機時服務或系統的啟動
預設的層級是:2
sysv-rc-conf
安裝
apt-get install sysv-rc-conf
設定服務是否啟動
sysv-rc-conf
列出所有運行層級之下的服務
sysv-rc-conf --list
查看某一程序的啟動狀態
sysv-rc-conf --list [服務名稱]
sysv-rc-conf --list postfix
開關某一服務
sudo sysv-rc-conf --level 35 ssh off # 關閉 ssh 3 及 5 的 run leve
sudo sysv-rc-conf atd on # 開啟 atd run level
sysv-rc-conf
安裝
apt-get install sysv-rc-conf
設定服務是否啟動
sysv-rc-conf
列出所有運行層級之下的服務
sysv-rc-conf --list
查看某一程序的啟動狀態
sysv-rc-conf --list [服務名稱]
sysv-rc-conf --list postfix
開關某一服務
sudo sysv-rc-conf --level 35 ssh off # 關閉 ssh 3 及 5 的 run leve
sudo sysv-rc-conf atd on # 開啟 atd run level
2011年11月23日 星期三
apt-get 套件管理
APT(Advanced Package Tool)是 Debian GNU/Linux 用來管理套件的工具,是針對所有的套件來管理,並可直接從網路上下載並安裝。
定義下載點:
/etc/apt/sources.list
格式:
deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3
deb 已編譯好的套裝軟體
deb-src 原始檔
http://host/debia:套件來源,也可能是CD-ROM, http, FTP, 目錄或ssh等
distribution:發布類型,包含穩定,不穩定,測試性三大類,如oneiric-backports oneiric-security等
元件:可能為 main(主要的) ,universe(全域適用), multiverse(複合的),restricted(受限的)
apt-get 參數 執行功能
參數
apt-get -b source packagename 下載來源碼包自動編譯成套裝軟體
apt-get -c 指定設定檔
apt-get -d |--download-only只下載而不安裝,下載的檔案會存放/var/cache/apt/archives/底下,例:apt-get -d install aterm
apt-get -f |--fix-broken 適當修正斷掉的關聯性,假如無法安裝,請試著下-f參數
apt-get -h
apt-get -m 忽略遺失的套件
apt-get -g安靜模式
apt-get -s dist-upgrade - 列出過程中執行的動作(模擬,不會實際動作),apt-get -s upgrade
apt-get -y dist-upgrade - 用 yes 回答所有設定問答
apt-get -u 顯示將被升級的套件
apt-get -v 顯示版本訊息
apt-get -V顯示需升級的完整套件名稱
--auto-remove 自動移除不用的相依性套件
--diff-only 只接diff的原始檔
--dsc-only 只接受dsc的原始檔
--force-yes 強迫所有的詢問都回答yes
--ignore-hold 忽略存在本地的套件
--list-cleanup 自動清除套件列表,預設值是開啟
--no-download 不下載套件,最好搭配--ignore-missing使用
--no-remove 不移除原有的套件
--no-upgrade不要升級原有的套件
--only-source 只接受原始碼的安裝
--purge 清除套件,列出將要移除的套件,在套件前會顯示*號
--reinstall 重新安裝已安裝的套件至最新版本
--tar-only 只接受tar的原始檔
功能
apt-get autoclean - 自動清除下載的暫存檔
apt-get autoremove # 刪除系統不再使用的 Package
build-dep 安裝或移除時檢驗原始檔的相依性
check 更新套件的暫存區並檢驗原始檔的相依性
apt-get clean 刪除下載回來的檔案(清除下載的暫存區)
apt-get dist-upgrade - 考慮套件相依性進行升級(升級並管理新版套件的相依性)
apt-get install 套件名稱,安裝某一個套件及其相關的套件
apt-get remove 套件名稱 移除套件,若想含設定檔等完整移除: apt-get --purge remove 套件名稱。若加-號,則相同於安裝。
purge 移除並清除套件
source 取得原始檔
update 重新更新套件的指標檔 /etc/apt/sources.list
upgrade 升級已經安裝在系統中的套件,紀錄在 /etc/apt/sources.list之中
定義下載點:
/etc/apt/sources.list
格式:
deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3
deb 已編譯好的套裝軟體
deb-src 原始檔
http://host/debia:套件來源,也可能是CD-ROM, http, FTP, 目錄或ssh等
distribution:發布類型,包含穩定,不穩定,測試性三大類,如oneiric-backports oneiric-security等
元件:可能為 main(主要的) ,universe(全域適用), multiverse(複合的),restricted(受限的)
apt-get 參數 執行功能
參數
apt-get -b source packagename 下載來源碼包自動編譯成套裝軟體
apt-get -c 指定設定檔
apt-get -d |--download-only只下載而不安裝,下載的檔案會存放/var/cache/apt/archives/底下,例:apt-get -d install aterm
apt-get -f |--fix-broken 適當修正斷掉的關聯性,假如無法安裝,請試著下-f參數
apt-get -h
apt-get -m 忽略遺失的套件
apt-get -g安靜模式
apt-get -s dist-upgrade - 列出過程中執行的動作(模擬,不會實際動作),apt-get -s upgrade
apt-get -y dist-upgrade - 用 yes 回答所有設定問答
apt-get -u 顯示將被升級的套件
apt-get -v 顯示版本訊息
apt-get -V顯示需升級的完整套件名稱
--auto-remove 自動移除不用的相依性套件
--diff-only 只接diff的原始檔
--dsc-only 只接受dsc的原始檔
--force-yes 強迫所有的詢問都回答yes
--ignore-hold 忽略存在本地的套件
--list-cleanup 自動清除套件列表,預設值是開啟
--no-download 不下載套件,最好搭配--ignore-missing使用
--no-remove 不移除原有的套件
--no-upgrade不要升級原有的套件
--only-source 只接受原始碼的安裝
--purge 清除套件,列出將要移除的套件,在套件前會顯示*號
--reinstall 重新安裝已安裝的套件至最新版本
--tar-only 只接受tar的原始檔
功能
apt-get autoclean - 自動清除下載的暫存檔
apt-get autoremove # 刪除系統不再使用的 Package
build-dep 安裝或移除時檢驗原始檔的相依性
check 更新套件的暫存區並檢驗原始檔的相依性
apt-get clean 刪除下載回來的檔案(清除下載的暫存區)
apt-get dist-upgrade - 考慮套件相依性進行升級(升級並管理新版套件的相依性)
apt-get install 套件名稱,安裝某一個套件及其相關的套件
apt-get remove 套件名稱 移除套件,若想含設定檔等完整移除: apt-get --purge remove 套件名稱。若加-號,則相同於安裝。
purge 移除並清除套件
source 取得原始檔
update 重新更新套件的指標檔 /etc/apt/sources.list
upgrade 升級已經安裝在系統中的套件,紀錄在 /etc/apt/sources.list之中
2011年11月22日 星期二
dpkg 套件管理
套件組成:
dpkg -c 解開套件
以 dhcp3套件為例:
/etc/dhcp3/ 設定檔目錄
/etc/init.d/dhcp3-server ;啟動程式,後面可接 start/stop/restart
/usr/sbin/ 執行檔
/usr/share/ 線上說明檔,包括man與說明文件
/var/紀錄檔
顯示 dpkg 套件安裝的檔案列表
dpkg -L mysql-server-4.1
dpkg -c mysql-server-4.1_4.1.11a-4sarge2_i386.deb (contents archive)
L:後面接套件名稱,c:後面接套件檔名
顯示 dpkg 套件安裝的控制資訊
dpkg -f mysql-server-4.1_4.1.11a-4sarge2_i386.deb
顯示 dpkg 套件資訊
dpkg -s mysql-server-4.1
dpkg -I mysql-server-4.1_4.1.11a-4sarge2_i386.deb (大寫I)
顯示已安裝套件列表
dpkg -l
dpkg -l openssh-server
dpkg -l mysql*
安裝套件
dpkg -i mysql-server-4.1_4.1.11a-4sarge2_i386.deb
移除套件
dpkg -r mysql-server-4.1 (保留設定檔)
dpkg -P mysql-server-4.1 (purge不保留設定檔)
詢問檔案所屬套件的名稱
dpkg -S /usr/sbin/mysqld
其他
建立一個deb包裝檔
dpkg -b fakeroot cscope_15.1.0_i386.deb
清除現有的套件訊息
dpkg --clear-avail
解開deb到指定的路徑下
-x,--extract archive directory
dpkg -x ./檔案名稱.deb ./Temp
-X (大寫X解開deb到指定的路徑下,並顯示過程)
解開控制檔
dpkg -e ./檔案名稱.deb ./Temp/DEBIAN
-C|--audit 檢查已損毀的套件
-s|--status <套件> ... 顯示套件的詳細狀態。
-p|--print-avail <套件> ... 顯示可用版本的詳細資訊。
-S|--search <表達式> ... 查詢某些檔案是屬於哪些套件。
--unpack package_file 將套件解開到預設的位置,但不設定套件。
--version 顯示版本資訊
dpkg -c 解開套件
以 dhcp3套件為例:
/etc/dhcp3/ 設定檔目錄
/etc/init.d/dhcp3-server ;啟動程式,後面可接 start/stop/restart
/usr/sbin/ 執行檔
/usr/share/ 線上說明檔,包括man與說明文件
/var/紀錄檔
顯示 dpkg 套件安裝的檔案列表
dpkg -L mysql-server-4.1
dpkg -c mysql-server-4.1_4.1.11a-4sarge2_i386.deb (contents archive)
L:後面接套件名稱,c:後面接套件檔名
顯示 dpkg 套件安裝的控制資訊
dpkg -f mysql-server-4.1_4.1.11a-4sarge2_i386.deb
顯示 dpkg 套件資訊
dpkg -s mysql-server-4.1
dpkg -I mysql-server-4.1_4.1.11a-4sarge2_i386.deb (大寫I)
顯示已安裝套件列表
dpkg -l
dpkg -l openssh-server
dpkg -l mysql*
安裝套件
dpkg -i mysql-server-4.1_4.1.11a-4sarge2_i386.deb
移除套件
dpkg -r mysql-server-4.1 (保留設定檔)
dpkg -P mysql-server-4.1 (purge不保留設定檔)
詢問檔案所屬套件的名稱
dpkg -S /usr/sbin/mysqld
其他
建立一個deb包裝檔
dpkg -b fakeroot cscope_15.1.0_i386.deb
清除現有的套件訊息
dpkg --clear-avail
解開deb到指定的路徑下
-x,--extract archive directory
dpkg -x ./檔案名稱.deb ./Temp
-X (大寫X解開deb到指定的路徑下,並顯示過程)
解開控制檔
dpkg -e ./檔案名稱.deb ./Temp/DEBIAN
-C|--audit 檢查已損毀的套件
-s|--status <套件> ... 顯示套件的詳細狀態。
-p|--print-avail <套件> ... 顯示可用版本的詳細資訊。
-S|--search <表達式> ... 查詢某些檔案是屬於哪些套件。
--unpack package_file 將套件解開到預設的位置,但不設定套件。
--version 顯示版本資訊
2011年11月21日 星期一
權限與管理
檔案的類型與權限
ls -al
drwxr-xr-x 115 root root 4096 2011-05-03 08:30 webmin
第一欄
第1字元:代表這是『目錄、檔案或連結檔』:
d是目錄,-是檔案,l為連結檔,b表示可供儲存的周邊設備,c表示序列埠設備,例如鍵盤、滑鼠,s表示socket。
接下來的字元中,以三個為一組,且均為『rwx』 的三個參數的組合,第一組為『檔案擁有者的權限』,第二組為『同群組的權限』;第三組為『其他非本群組的權限』,x這個欄位若為s,表示以擁有者或同群組的身分執行,若有t表示stickly bit,即使一般人有寫入的權限,但只有擁有者才能刪除。
檔案隱藏屬性:
chattr指令只能在Ext2/Ext3的檔案系統上面生效,其他的檔案系統可能就無法支援
chattr [+-=][ASacdistu] 檔案或目錄名稱
選項與參數:
+:增加某一個特殊參數
-:移除某一個特殊參數
=:設定
A:設定時,若你有存取此檔案(或目錄),他的存取時間 atime 將不會被修改,可避免過度的存取磁碟。
S:加上S這個屬性時,任何檔案的修改,會『同步』寫入磁碟中。
a:當設定之後,這個檔案只能增加資料,不能刪除也不能修改,只有root才能設定這個屬性。
c:設定之後,將會自動檔案『壓縮』,讀取時會自動解壓縮,
d:當 dump 程序被執行的時候,設定d屬性將可使該檔案(或目錄)不會被 dump 備份
i:讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能設定此屬性
s:設定時,如果這個檔案被刪除,將會被完全的移除出硬碟!
u:與 s 相反的,如果該檔案被刪了,資料內容其實還存在磁碟中,可以來救援該檔案!
注意:常見的是 a 與 i 的設定值,很多設定值必須要身為 root 才能設定
顯示檔案隱藏屬性
lsattr [-adR] 檔案或目錄
選項與參數:
-a:將隱藏檔的屬性也列出來;
-d:如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
-R:連同子目錄的資料也一併顯示出來!
參考資料:鳥哥的linux私房菜
ls -al
drwxr-xr-x 115 root root 4096 2011-05-03 08:30 webmin
第一欄
第1字元:代表這是『目錄、檔案或連結檔』:
d是目錄,-是檔案,l為連結檔,b表示可供儲存的周邊設備,c表示序列埠設備,例如鍵盤、滑鼠,s表示socket。
接下來的字元中,以三個為一組,且均為『rwx』 的三個參數的組合,第一組為『檔案擁有者的權限』,第二組為『同群組的權限』;第三組為『其他非本群組的權限』,x這個欄位若為s,表示以擁有者或同群組的身分執行,若有t表示stickly bit,即使一般人有寫入的權限,但只有擁有者才能刪除。
檔案隱藏屬性:
chattr指令只能在Ext2/Ext3的檔案系統上面生效,其他的檔案系統可能就無法支援
chattr [+-=][ASacdistu] 檔案或目錄名稱
選項與參數:
+:增加某一個特殊參數
-:移除某一個特殊參數
=:設定
A:設定時,若你有存取此檔案(或目錄),他的存取時間 atime 將不會被修改,可避免過度的存取磁碟。
S:加上S這個屬性時,任何檔案的修改,會『同步』寫入磁碟中。
a:當設定之後,這個檔案只能增加資料,不能刪除也不能修改,只有root才能設定這個屬性。
c:設定之後,將會自動檔案『壓縮』,讀取時會自動解壓縮,
d:當 dump 程序被執行的時候,設定d屬性將可使該檔案(或目錄)不會被 dump 備份
i:讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能設定此屬性
s:設定時,如果這個檔案被刪除,將會被完全的移除出硬碟!
u:與 s 相反的,如果該檔案被刪了,資料內容其實還存在磁碟中,可以來救援該檔案!
注意:常見的是 a 與 i 的設定值,很多設定值必須要身為 root 才能設定
顯示檔案隱藏屬性
lsattr [-adR] 檔案或目錄
選項與參數:
-a:將隱藏檔的屬性也列出來;
-d:如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
-R:連同子目錄的資料也一併顯示出來!
參考資料:鳥哥的linux私房菜
2011年11月20日 星期日
配額
Quota 的使用限制
1.僅能針對整個 filesystem: (分割區)
4.安裝Quota的套件
暫時性手動加入 quota 的支援
UUID=.... /home ext3 relatime,usrquota,grpquota 1 2
重新開機,檢查 /etc/mtab 有沒有usrquota
quotacheck :掃瞄檔案系統並建立 Quota 的記錄檔
quotacheck [-avugfM] [/mount_point]
選項與參數:
-a :掃瞄所有在 /etc/mtab 內,含有 quota 支援的 filesystem,加上此參數後,/mount_point 可不必寫,
-u :針對使用者掃瞄檔案與目錄的使用情況,會建立 aquota.user
-g :針對群組掃瞄檔案與目錄的使用情況,會建立 aquota.group
-v :顯示掃瞄過程的資訊;
-f :強制掃瞄檔案系統,並寫入新的 quota 設定檔 (危險)
-M :強制以讀寫的方式掃瞄檔案系統,只有在特殊情況下才會使用。
-f 與 -M 是在檔案系統可能已經啟動 quota 了,但想要重新掃瞄檔案系統時,系統會要求加入的選項啦 (擔心有其他人已經使用 quota 中)!
edquota :編輯帳號/群組的限值與寬限時間
edquota 是 edit quota 的縮寫
edquota [-u username] [-g groupname]
edquota -t <==修改寬限時間
edquota -p 範本帳號 -u 新帳號
選項與參數:
-u :後面接帳號名稱。設定 username 的限制值;
-g :後面接群組名稱。設定 groupname 的限制值;
-t :可以修改寬限時間。
-p :複製範本。將範本帳號這個人的 quota 限制值複製給 新帳號
編輯某一帳號配額
套用某一帳號設定
範例一:edquota -p myquota1 -u myquota2 //將p的範例給使用者u
範例二:edquota -p myquota1 myquota2
寬限時間修改
edquota -t
edquota -ut
Quota限制值的報表
個人報表
quota [-uvs] [username]
quota [-gvs] [groupname]
選項與參數:
-u :後面可以接 username ,表示顯示出該使用者的 quota 限制值。若不接 username,表示顯示出執行者的 quota 限制值。
-g :後面可接 groupname ,表示顯示出該群組的 quota 限制值。
-v :顯示每個用戶在 filesystem 的 quota 值;
-s :使用 1024 為倍數來指定單位,會顯示如 M 之類的單位!
例: quota -uvs myquota1
repquota :針對檔案系統的限額做報表
repquota -a [-vugs]
選項與參數:
-a :直接到 /etc/mtab 搜尋具有 quota 標誌的 filesystem ,並報告 quota 的結果;
-v :輸出的資料將含有 filesystem 相關的細部資訊;
-u :顯示出使用者的 quota 限值 (這是預設值);
-g :顯示出個別群組的 quota 限值。
-s :使用 M, G 為單位顯示結果
例:repquota -auvs 或 repquota -a
啟動 quota 的服務
quotaon [-avug]
quotaon [-vug] [/mount_point]
選項與參數:
-u :針對使用者啟動 quota (aquota.user)
-g :針對群組啟動 quota (aquota.group)
-v :顯示啟動過程的相關訊息;
-a :根據/etc/mtab 內的 filesystem 設定啟動有關的quota,若不加 -a 的話,則後面就需要加上特定的 filesystem!
例:quotaon -av
關閉 quota 的服務
quotaoff [-a]
quotaoff [-ug] [/mount_point]
選項與參數:
-a :全部filesystem 的 quota 都關閉 (根據 /etc/mtab)
-u :僅針對後面接的那個 /mount_point 關閉 user quota
-g :僅針對後面接的那個 /mount_point 關閉 group quota
例:quotaoff -a
測試
測試一:利用一般使用者的身份,建置一個 270MB 的大檔案,並觀察 quota 結果!
dd if=/dev/zero of=bigfile bs=1M count=270
以下是dd說明
dd 可以讀取磁碟裝置的內容(幾乎是直接讀取磁區"sector"),將整個裝置備份成一個檔案呢!
dd if="input_file" of="output_file" bs="block_size" count="number"
選項與參數:
if :就是 input file 囉~也可以是裝置喔!
of :就是 output file 喔~也可以是裝置;
bs :規劃的一個 block 的大小,若未指定則預設是 512 bytes(一個 sector 的大小)
count:多少個 bs 的意思。
1.僅能針對整個 filesystem: (分割區)
- 檢查/home 是否是個獨立的 filesystem,不過,不太建議在根目錄設定 Quot
df -h /home (-h Display in Kb, Mb, or Gb )
- mount | grep home 檢查檔案格式
4.安裝Quota的套件
- apt-get install quota
暫時性手動加入 quota 的支援
- mount -o remount,usrquota,grpquota /home
永久性設定Quota的檔案系統
在/etc/fstab第四欄位加入,usrquota,grpquota
vi /etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2或
UUID=.... /home ext3 relatime,usrquota,grpquota 1 2
重新開機,檢查 /etc/mtab 有沒有usrquota
quotacheck :掃瞄檔案系統並建立 Quota 的記錄檔
quotacheck [-avugfM] [/mount_point]
選項與參數:
-a :掃瞄所有在 /etc/mtab 內,含有 quota 支援的 filesystem,加上此參數後,/mount_point 可不必寫,
-u :針對使用者掃瞄檔案與目錄的使用情況,會建立 aquota.user
-g :針對群組掃瞄檔案與目錄的使用情況,會建立 aquota.group
-v :顯示掃瞄過程的資訊;
-f :強制掃瞄檔案系統,並寫入新的 quota 設定檔 (危險)
-M :強制以讀寫的方式掃瞄檔案系統,只有在特殊情況下才會使用。
-f 與 -M 是在檔案系統可能已經啟動 quota 了,但想要重新掃瞄檔案系統時,系統會要求加入的選項啦 (擔心有其他人已經使用 quota 中)!
例:quotaoff -a //先關閉quota
quotacheck -uvg /home //建立Quota的記錄檔
建立過程中會顯示記錄檔尚未建立而已,可以忽略不理!
使用ll -d /home/a* (ll 表示ls -l)
會顯示aquota記錄檔 /home/aquota.group /home/aquota.user
edquota :編輯帳號/群組的限值與寬限時間
edquota 是 edit quota 的縮寫
edquota [-u username] [-g groupname]
edquota -t <==修改寬限時間
edquota -p 範本帳號 -u 新帳號
選項與參數:
-u :後面接帳號名稱。設定 username 的限制值;
-g :後面接群組名稱。設定 groupname 的限制值;
-t :可以修改寬限時間。
-p :複製範本。將範本帳號這個人的 quota 限制值複製給 新帳號
編輯某一帳號配額
edquota -u myquota1
Disk quotas for user myquota1 (uid 710):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 0 0 10 0 0
七個欄位分別的意義為:
- 檔案系統 (filesystem):
- 磁碟容量 (blocks):這個數值是 quota 自己算出來的,單位為 Kbytes,請不要更動他;
- soft:磁碟容量 (block) 的 soft 限制值,單位亦為 KB,(警告上限)
- hard:block 的 hard 限制值,單位 KB;(容量上限)
- 檔案數量 (inodes):這是 quota 自己算出來的,單位為個數,請不要更動他;
- soft:inode 的 soft 限制值;
- hard:inode 的 hard 限制值;
範例一: /dev/hda3 80 250000 300000 10 0 0
套用某一帳號設定
範例一:edquota -p myquota1 -u myquota2 //將p的範例給使用者u
範例二:edquota -p myquota1 myquota2
寬限時間修改
edquota -t
edquota -ut
Quota限制值的報表
個人報表
quota [-uvs] [username]
quota [-gvs] [groupname]
選項與參數:
-u :後面可以接 username ,表示顯示出該使用者的 quota 限制值。若不接 username,表示顯示出執行者的 quota 限制值。
-g :後面可接 groupname ,表示顯示出該群組的 quota 限制值。
-v :顯示每個用戶在 filesystem 的 quota 值;
-s :使用 1024 為倍數來指定單位,會顯示如 M 之類的單位!
例: quota -uvs myquota1
repquota :針對檔案系統的限額做報表
repquota -a [-vugs]
選項與參數:
-a :直接到 /etc/mtab 搜尋具有 quota 標誌的 filesystem ,並報告 quota 的結果;
-v :輸出的資料將含有 filesystem 相關的細部資訊;
-u :顯示出使用者的 quota 限值 (這是預設值);
-g :顯示出個別群組的 quota 限值。
-s :使用 M, G 為單位顯示結果
例:repquota -auvs 或 repquota -a
啟動 quota 的服務
quotaon [-avug]
quotaon [-vug] [/mount_point]
選項與參數:
-u :針對使用者啟動 quota (aquota.user)
-g :針對群組啟動 quota (aquota.group)
-v :顯示啟動過程的相關訊息;
-a :根據/etc/mtab 內的 filesystem 設定啟動有關的quota,若不加 -a 的話,則後面就需要加上特定的 filesystem!
例:quotaon -av
關閉 quota 的服務
quotaoff [-a]
quotaoff [-ug] [/mount_point]
選項與參數:
-a :全部filesystem 的 quota 都關閉 (根據 /etc/mtab)
-u :僅針對後面接的那個 /mount_point 關閉 user quota
-g :僅針對後面接的那個 /mount_point 關閉 group quota
例:quotaoff -a
測試
測試一:利用一般使用者的身份,建置一個 270MB 的大檔案,並觀察 quota 結果!
dd if=/dev/zero of=bigfile bs=1M count=270
以下是dd說明
dd 可以讀取磁碟裝置的內容(幾乎是直接讀取磁區"sector"),將整個裝置備份成一個檔案呢!
dd if="input_file" of="output_file" bs="block_size" count="number"
選項與參數:
if :就是 input file 囉~也可以是裝置喔!
of :就是 output file 喔~也可以是裝置;
bs :規劃的一個 block 的大小,若未指定則預設是 512 bytes(一個 sector 的大小)
count:多少個 bs 的意思。
2011年11月17日 星期四
帳號與群組
root 的UID及GID皆為0
預設帳號:
Apache或是nobody 執行apache的帳號
dovecot 執行dovecot (pop3伺服器)的帳號
named或bind 執行(DNS伺服器) 的帳號
lp 列印服務的帳號
postfix
squid (PROXY)
新增帳號設定檔
/etc/default/useradd
SHELL=/bin/sh //可改為 /bin/bash
# GROUP=100
# HOME=/home
//預設建立一個與帳號相同的群組,在/home 之下
# INACTIVE=-1 //預設不定義密碼變更期限
# EXPIRE= //預設不定義帳號失效期限
/etc/login.defs
MAIL_DIR /var/mail //郵件存放目錄
FAILLOG_ENAB yes //登錄失敗狀況
LOG_OK_LOGINS no //是否紀綠登入成功的帳號
#記錄 su 的活動
SYSLOG_SU_ENAB yes
SYSLOG_SG_ENAB yes
#記錄登入失敗的帳號,可使用lastb查詢
FTMP_FILE /var/log/btmp
#密碼時效控制
PASS_MAX_DAYS 99999 //可使用日數
PASS_MIN_DAYS 0 //多少日內不得變更
PASS_WARN_AGE 7 //失效幾日前提出警告
# 使用useradd自動取得UID的範圍
UID_MIN 1000
UID_MAX 60000
#使用groupadd自動取得GID的範圍
GID_MIN 1000
GID_MAX 60000
#密碼錯誤嘗試登入次數
LOGIN_RETRIES 5
# 需在幾秒內登入系統
LOGIN_TIMEOUT 60
#如果帳號目錄不存在,允許登入
DEFAULT_HOME yes
# 如果群組中沒有其他帳號,使用userdel移除帳號時會一併將該群組刪除
USERGROUPS_ENAB yes
/etc/skel/.bashrc
/etc/skel/.profile
新增帳號
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM][-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名
選項與參數:
-u :後面接的是 UID ,
-g :群組名稱, initial group
-G :群組名稱,還可以加入的群組
-M :強制!不要建立使用者家目錄!(系統帳號預設值)
-m :強制!要建立使用者家目錄!(一般帳號預設值)
-c :說明
-d :指定某個目錄成為家目錄,而不要使用預設值。務必使用絕對路徑!
-r :建立一個系統的帳號,這個帳號的 UID 會有限制
-s :後面接一個 shell ,若沒有指定則預設是 /bin/bash
-e :後面接一個日期,格式為『YYYY-MM-DD』帳號失效日
-f :密碼是否會失效。0為立刻失效,-1 為永遠不失效(密碼只會過期而強制於登入時重新設定而已。)
範例一:
useradd -m peter
step 01 /etc/default/useradd
step 02 /etc/login.defs
step 03 /etc/skel/.bash* 複製到該帳號的根目錄之下
/etc/skel/ 預設有 .bashrc .profile 檔案,由於/etc/default/useradd 指定 SKEL=/etc/skel,因此新增帳號時,會將此目錄下的檔案複製到使用者帳號根目錄下。
範例二:
useradd -u 501 -g 100 -G 1001 -d /home/peter -m peter
由於加了 -m 所以系統會將 /etc/skel 下的 profile 複製到 /home/peter之下的 .bash* ,此外,還有mail spool的相關檔案
範例三:新增與root相同權限的帳號
useradd miffy
passwd miffy
將 miffy 的 uid 與 gid 改為0
useradd 的預設值
useradd -D
GROUP=100 <==預設的群組
HOME=/home <==預設的家目錄所在目錄
INACTIVE=-1 <==密碼失效日
EXPIRE= <==帳號失效日
SHELL=/bin/bash <==預設的 shell
SKEL=/etc/skel <==使用者家目錄的內容資料參考目錄
CREATE_MAIL_SPOOL=yes <==是否主動幫使用者建立郵件信箱(mailbox)
刪除帳號
userdel
連根目錄一起刪除
userdel -r
usermod [-cdegGlsuLU] username 修改帳號
-c :後面接帳號的說明
-d :後面接帳號的家目錄
-e :後面接日期,格式是 YYYY-MM-DD,也就是在 /etc/shadow 內的第八個欄位
-f :後面接天數,為 shadow 的第七欄位。
-g :後面接初始群組,修改 /etc/passwd 的第四個欄位!
-G :後面接次要群組,修改使用者能夠支援的群組,修改的是 /etc/group
-a :與 -G 合用,可『增加次要群組的支援』而非『設定』
-l :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄!
-s :後面接 Shell 的實際檔案,如 /bin/bash 或 /bin/csh
-u :後面接 UID 數字
-L :暫時將使用者的密碼凍結,僅改 /etc/shadow 的密碼欄。
-U :將 /etc/shadow 密碼欄的 ! 拿掉,帳號可恢復使用
gpasswd:群組管理員功能
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
:若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A :將 groupname 的主控權交由後面的使用者管理(該群組的管理員)
-M :將某些帳號加入這個群組當中!
-r :將 groupname 的密碼移除
-R :讓 groupname 的密碼欄失效
-d :將某位使用者移除出 groupname 這個群組當中。
groupadd 建立群組
groupadd testgroup <==建立群組
資料來源:鳥哥的 Linux 私房菜
相關設定檔
/etc/passwd 帳號設定檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,若使用/etc/shadow,則此一欄位為x。若未使用shadow,且密碼欄位為*,則無法使用login
3.UID:使用者識別碼,0(系統管理員),1~1000(系統帳號)
4.GID:主要群組,定義在 /etc/group
5.使用者資訊說明欄:註解
6.家目錄:
7.Shell:(與系統的核心溝通以進行使用者的操作任務),若為 /sbin/nologin 無法登入
若是不想讓帳號登入,除密碼欄位設為*外,可使用passwd -l user ,或是在shell填入 /sbin/nologin
/etc/shadow 加密過的密碼檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,在此欄位前加上 ! 或 * 改變密碼欄位長度,就會讓密碼『暫時失效』了。
3.最近更動密碼的日期
4.密碼不可被更動的天數,0沒限制
5.密碼需要重新變更的天數,99999沒限制
6.密碼需要變更期限前的警告天數
7.密碼過期後的帳號寬限時間(密碼失效日),不過如果密碼過期了, 那當你登入系統時,系統會強制要求你必須要重新設定密碼才能登入繼續使用喔,
8.帳號失效日期:
9.保留
日期的時間是以 1970 年 1 月 1 日作為 1 而累加的日期
/etc/group
1.群組名稱:
2.群組密碼:這個設定通常是給『群組管理員』使用的,目前很少有這個機會設定群組管理員,密碼已經移動到 /etc/gshadow去,這個欄位只會存在一個『x』
3.GID:就是群組的 ID 啊
4.此群組支援的帳號名稱:若有多個人員,以『,』隔開
/var/mail/帳號名稱 使用者郵件
newgrp: 有效群組的切換
exit 離開回原有效群組
參考資料:鳥哥的 Linux 私房菜
預設帳號:
Apache或是nobody 執行apache的帳號
dovecot 執行dovecot (pop3伺服器)的帳號
named或bind 執行(DNS伺服器) 的帳號
lp 列印服務的帳號
postfix
squid (PROXY)
新增帳號設定檔
/etc/default/useradd
SHELL=/bin/sh //可改為 /bin/bash
# GROUP=100
# HOME=/home
//預設建立一個與帳號相同的群組,在/home 之下
# INACTIVE=-1 //預設不定義密碼變更期限
# EXPIRE= //預設不定義帳號失效期限
/etc/login.defs
MAIL_DIR /var/mail //郵件存放目錄
FAILLOG_ENAB yes //登錄失敗狀況
LOG_OK_LOGINS no //是否紀綠登入成功的帳號
#記錄 su 的活動
SYSLOG_SU_ENAB yes
SYSLOG_SG_ENAB yes
#記錄登入失敗的帳號,可使用lastb查詢
FTMP_FILE /var/log/btmp
#密碼時效控制
PASS_MAX_DAYS 99999 //可使用日數
PASS_MIN_DAYS 0 //多少日內不得變更
PASS_WARN_AGE 7 //失效幾日前提出警告
# 使用useradd自動取得UID的範圍
UID_MIN 1000
UID_MAX 60000
#使用groupadd自動取得GID的範圍
GID_MIN 1000
GID_MAX 60000
#密碼錯誤嘗試登入次數
LOGIN_RETRIES 5
# 需在幾秒內登入系統
LOGIN_TIMEOUT 60
#如果帳號目錄不存在,允許登入
DEFAULT_HOME yes
# 如果群組中沒有其他帳號,使用userdel移除帳號時會一併將該群組刪除
USERGROUPS_ENAB yes
/etc/skel/.bashrc
/etc/skel/.profile
新增帳號
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM][-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名
選項與參數:
-u :後面接的是 UID ,
-g :群組名稱, initial group
-G :群組名稱,還可以加入的群組
-M :強制!不要建立使用者家目錄!(系統帳號預設值)
-m :強制!要建立使用者家目錄!(一般帳號預設值)
-c :說明
-d :指定某個目錄成為家目錄,而不要使用預設值。務必使用絕對路徑!
-r :建立一個系統的帳號,這個帳號的 UID 會有限制
-s :後面接一個 shell ,若沒有指定則預設是 /bin/bash
-e :後面接一個日期,格式為『YYYY-MM-DD』帳號失效日
-f :密碼是否會失效。0為立刻失效,-1 為永遠不失效(密碼只會過期而強制於登入時重新設定而已。)
範例一:
useradd -m peter
step 01 /etc/default/useradd
step 02 /etc/login.defs
step 03 /etc/skel/.bash* 複製到該帳號的根目錄之下
/etc/skel/ 預設有 .bashrc .profile 檔案,由於/etc/default/useradd 指定 SKEL=/etc/skel,因此新增帳號時,會將此目錄下的檔案複製到使用者帳號根目錄下。
範例二:
useradd -u 501 -g 100 -G 1001 -d /home/peter -m peter
由於加了 -m 所以系統會將 /etc/skel 下的 profile 複製到 /home/peter之下的 .bash* ,此外,還有mail spool的相關檔案
範例三:新增與root相同權限的帳號
useradd miffy
passwd miffy
將 miffy 的 uid 與 gid 改為0
useradd 的預設值
useradd -D
GROUP=100 <==預設的群組
HOME=/home <==預設的家目錄所在目錄
INACTIVE=-1 <==密碼失效日
EXPIRE= <==帳號失效日
SHELL=/bin/bash <==預設的 shell
SKEL=/etc/skel <==使用者家目錄的內容資料參考目錄
CREATE_MAIL_SPOOL=yes <==是否主動幫使用者建立郵件信箱(mailbox)
刪除帳號
userdel
連根目錄一起刪除
userdel -r
usermod [-cdegGlsuLU] username 修改帳號
-c :後面接帳號的說明
-d :後面接帳號的家目錄
-e :後面接日期,格式是 YYYY-MM-DD,也就是在 /etc/shadow 內的第八個欄位
-f :後面接天數,為 shadow 的第七欄位。
-g :後面接初始群組,修改 /etc/passwd 的第四個欄位!
-G :後面接次要群組,修改使用者能夠支援的群組,修改的是 /etc/group
-a :與 -G 合用,可『增加次要群組的支援』而非『設定』
-l :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄!
-s :後面接 Shell 的實際檔案,如 /bin/bash 或 /bin/csh
-u :後面接 UID 數字
-L :暫時將使用者的密碼凍結,僅改 /etc/shadow 的密碼欄。
-U :將 /etc/shadow 密碼欄的 ! 拿掉,帳號可恢復使用
gpasswd:群組管理員功能
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
選項與參數::若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A :將 groupname 的主控權交由後面的使用者管理(該群組的管理員)
-M :將某些帳號加入這個群組當中!
-r :將 groupname 的密碼移除
-R :讓 groupname 的密碼欄失效
gpasswd [-ad] user groupname
-a :將某位使用者加入到 groupname 這個群組當中!-d :將某位使用者移除出 groupname 這個群組當中。
groupadd 建立群組
groupadd testgroup <==建立群組
資料來源:鳥哥的 Linux 私房菜
相關設定檔
/etc/passwd 帳號設定檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,若使用/etc/shadow,則此一欄位為x。若未使用shadow,且密碼欄位為*,則無法使用login
3.UID:使用者識別碼,0(系統管理員),1~1000(系統帳號)
4.GID:主要群組,定義在 /etc/group
5.使用者資訊說明欄:註解
6.家目錄:
7.Shell:(與系統的核心溝通以進行使用者的操作任務),若為 /sbin/nologin 無法登入
若是不想讓帳號登入,除密碼欄位設為*外,可使用passwd -l user ,或是在shell填入 /sbin/nologin
/etc/shadow 加密過的密碼檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,在此欄位前加上 ! 或 * 改變密碼欄位長度,就會讓密碼『暫時失效』了。
3.最近更動密碼的日期
4.密碼不可被更動的天數,0沒限制
5.密碼需要重新變更的天數,99999沒限制
6.密碼需要變更期限前的警告天數
7.密碼過期後的帳號寬限時間(密碼失效日),不過如果密碼過期了, 那當你登入系統時,系統會強制要求你必須要重新設定密碼才能登入繼續使用喔,
8.帳號失效日期:
9.保留
日期的時間是以 1970 年 1 月 1 日作為 1 而累加的日期
/etc/group
1.群組名稱:
2.群組密碼:這個設定通常是給『群組管理員』使用的,目前很少有這個機會設定群組管理員,密碼已經移動到 /etc/gshadow去,這個欄位只會存在一個『x』
3.GID:就是群組的 ID 啊
4.此群組支援的帳號名稱:若有多個人員,以『,』隔開
/var/mail/帳號名稱 使用者郵件
newgrp: 有效群組的切換
exit 離開回原有效群組
參考資料:鳥哥的 Linux 私房菜
2011年11月16日 星期三
linux特殊的檔案系統
虛擬記憶體
大小約實體記憶體2倍,不需要超過2GB
新增 swap partition
swap 關掉:swapoff /dev/hd[a-d][1-16]
刪除 /etc/fstab 中的設定
使用fdisk 移除partition
新增 swap file
swapoff /tmp/swap
刪除 /etc/fstab 中的設定
rm 移除檔案
/proc/sys/目錄
每個檔案代表不同的 kernel 配置,允許使用者改變,可以藉此調整系統
改變數值可直接用 echo 或 vi 改變,例如:echo 60000 >
或使用 sysctl 指令
-a 可以列出所有可以調整的項目。
-w 可以重新設定,但是記住 等號 旁不用空格。
例來說,在
顯示設定值:sysctl fs.file-max 或
修改設定值:sysctl -w fs.file-max=60000
以下值可用 cat 觀看,如:cat /proc/sys/fs/file-nr
/proc/下的數字部分
大小約實體記憶體2倍,不需要超過2GB
新增 swap partition
- 以『 fdisk /dev/hd[a-d] 』先建立一個 partition (或 parted)
- 以『 mkswap /dev/hd[a-d][1-16] 』將 partition 『格式化為 swap 的格式』
- 將 swap 啟動,『 swapon /dev/hd[a-d][1-16] 』
- 開機自動啟動,在/etc/fstab之中新增一行 /dev/hdb1 none swap sw 0 0
- 觀看指令: free 或 cat /proc/swaps
swap 關掉:swapoff /dev/hd[a-d][1-16]
刪除 /etc/fstab 中的設定
使用fdisk 移除partition
新增 swap file
- 以 dd 指令來建立 swapfile (這個指令可不只是製作一個檔案而已喔)
- 例一: dd if=/dev/zero of=/tmp/swap bs=4k count=16382
16382+0 records in
16382+0 records out
dd 這個指令是用來轉換檔案並且 copy 用的;
if 指的是要被轉換的輸入檔案格式 /dev/zero 可以由 man zero 來查看內容;
of 指的是輸出的檔案,我們將之輸出到 /tmp/swap 這個檔案;
bs 指的是一個磁區佔用幾個 kb ;
count 指的是要使用多少個 bs ,所以最後的容量為 bs*count = 4k * 16382 ~ 64MB - 例二: dd if=/dev/zero of=/newswap bs=1024 count=131072
- 使用『 mkswap /tmp/swap』將 /tmp/swap 這個檔案格式化為 swap 的檔案格式:
- 以『 swapon /tmp/swap』 來將 /tmp/swap 啟動
- 開機自動啟動,在/etc/fstab之中新增一行 /tmp/swap swap swap noatime 0 0(不知這樣設定是否正確)
- 觀看指令: free 或 cat /proc/swaps
swapoff /tmp/swap
刪除 /etc/fstab 中的設定
rm 移除檔案
/proc/sys/目錄
每個檔案代表不同的 kernel 配置,允許使用者改變,可以藉此調整系統
改變數值可直接用 echo 或 vi 改變,例如:echo 60000 >
/proc/sys/fs/file-max
或使用 sysctl 指令
-a 可以列出所有可以調整的項目。
-w 可以重新設定,但是記住 等號 旁不用空格。
例來說,在
/proc/sys/fs/file-max
中的配置指定了可一次開啟的最多檔案數目顯示設定值:sysctl fs.file-max 或
修改設定值:sysctl -w fs.file-max=60000
或是修改 /etc/sysctl.conf
以下值可用 cat 觀看,如:cat /proc/sys/fs/file-nr
- /proc/sys/fs/file-max - 核心預設最多可以開啟的檔案個數
- /proc/sys/fs/file-nr - 目前已分配檔案個數、開啟檔案個數、總開啟檔案上限
- /proc/sys/fs/inode-state -inode相關資訊
/proc/sys/fs/inode-nr (number of inodes and number of free inodes) - /proc/sys/kernel/acct -(accounting free space (as a percentage))預設為2 4 30表示日誌系統少於 2% 的可用空間,記帳停止,有4%或更多可用空間,則再次啟動記帳。每30 秒檢查。
- /proc/sys/kernel/ctrl-alt-del - 接收到 ctrl+alt+del 時如何反應。0值表示系統可以完整地關閉和重啟,資料回存,就像 shutdown 命令一樣。1值表示直接重新開機,就好像直接關閉電源一樣。
- /proc/sys/kernel/domainname /proc/sys/kernel/hostname 應透過 /etc/hosts更改
- /proc/sys/kernel/osrelease 核心版本
- /proc/sys/kernel/ostype 作業系統種類
- /proc/sys/kernel/version發行版本
- /proc/sys/kernel/modprobe modprobe的位置
- /proc/sys/net/ipv4/icmp_echo_ignore_all 1值表示不回應icmp echo封包,如ping
- /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 1值表示不回應icmp廣播封包
- /proc/sys/net/ipv4/ip_default_ttl 封包能存活所經過位置的個數(轉送位置)
- /proc/sys/net/ipv4/ip_dynaddr 允許socket重新訂定IP(動態IP是必要的)
- /proc/sys/net/ipv4/ip_forward 1值表示這台是router
- /proc/sys/net/ipv4/ip_local_port_range 本機連到外面所用的port範圍
- /proc/sys/net/ipv4/tcp_keepalive_intvl 當一個探測沒有獲得確認,隔多久要被重送。
- /proc/sys/net/ipv4/tcp_keepalive_probes 在斷線之前,要送出多少個keepalive探測。
- /proc/sys/net/ipv4/tcp_keepalive_time 多久送出一次仍保持連線的訊息,預設2小時
- /proc/sys/net/ipv4/tcp_syn_retries 對外建立TCP連線,所送出開始的SYNs的次數
- /proc/sys/net/ipv4/tcp_fin_timeout socket結束前用來接收一個結束FIN的封包的時間(秒)
- /proc/sys/net/ipv4/tcp_retries1 在放棄前,回應TCP連線重新傳遞的請求的次數。
- /proc/sys/net/ipv4/tcp_retries2 在放棄前,TCP連線重新傳遞的請求的次數。
- /proc/sys/net/ipv4/tcp_syncookies 1表示不回應tcp新建立的連線不為syn的封包
- /proc/sys/vm/max_map_count 一個程序所擁有的記憶體對應區域
- /proc/sys/vm/overcommit_memory 0值時,核心在配置程序所用的記憶體時,會檢查是否有足夠憶體
/proc/下的數字部分
- cd /proc 進入proc之後,會有許多數字的目錄,代表是process id
- cmdline 記載執行某個process id的完整指令,例如: cat /proc/1202/cmdline
- cwd Process的工作目錄,例: ls -l /proc/1353/cwd
- exe 執行檔實際位置的連結,例:ls -l /proc/1353/exe
- fd 被這個process所開啟的檔案,0是input,1是output, 2是錯誤,其他為程式另外定義,例如: ls -l /proc/1353/fd
- maps 這個程式所對應的記憶體使用區塊及權限。例:cat /proc/1353/maps
- stat 這個process的狀態資訊,例如: cat /proc/1353/stat
- cmdline 提供給linux核心的開機參數 cat /proc/cmdline
- cpuinfo 例如: cat /proc/cpuinfo
- devices 例如:cat /proc/devices
- filesystems 列出核心所支援的file system 例如: cat /proc/filesystems
- ide 列出ide裝置資訊,例如: ll /proc/ide/
- interrupts 列出IRQ資訊,例如: cat /proc/interrupts
- iomem 列出I/O記憶體的對應,例如: cat /proc/iomem
- ioports 列出正確註冊,且在使用的I/O,例如: cat /proc/ioports
- loadavg 工作平均數,例如: cat /proc/loadavg
- meminfo 記憶體資訊,例如:cat /proc/meminfo
- modules,例如:cat /proc/modules
- partitions,例如:cat /proc/partitions
- pci,例如:cat /proc/pci
- scsi,例如:ls -l /proc/scsi
- stat,核心與系統方面統計,例如:cat /proc/stat
- swaps,例如:cat /proc/swaps
- sysvipc 程序間通訊相關資料,有三個檔案,shm共用記憶體資料, sem號誌陣列, msg訊息佇列 ,例:ls -l /proc/sysvipc/ 。也可用 ipcs 指令來觀察
- cat /proc/uptime 包含總的系統正常工作時間及空閒時間
- cat /proc/version 核心資訊及gcc版本
- cat /proc/net/arp 網路卡卡號與IP對應
- cat /proc/net/dev 網路裝置及傳送與接收的統計
- cat /proc/net/netstat 網路統計數字
- cat /proc/net/psched (packet schedule)所有排程參數
- cat /proc/net/raw (raw device)的統計數字
- cat /proc/net/route
- cat /proc/net/snmp (Simple Network Management Protocol)
- cat /proc/net/sockstat
- cat /proc/net/tcp
- cat /proc/net/udp
- cat /proc/net/wireless
linux系統目錄
系統目錄
- /bin 放置的是在單人維護模式下還能夠被操作的指令,可被root與一般帳號所使用
- /boot 放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機設定檔。 Linux kernel常用的檔名為vmlinuz,若使用grub開機管理程式, 則會有 /boot/grub/目錄
- /cdrom CDROM的內容,連結到 /media/cdrom
- /dev 硬體裝置檔,比要重要的檔案有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等
- /etc 本機特定的系統設定檔,這個目錄下的各檔案屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。FHS建議不要放執行檔在這個目錄中。比較重要的檔案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 。
- 其下重要的目錄有
- /etc/init.d/:放置所有服務的預設啟動 script ,例:/etc/init.d/iptables start、/etc/init.d/iptables stop
- /etc/xinetd.d/:super daemon管理的各項服務的設定檔目錄
- /etc/X11/:與 X Window 有關的各種設定檔,xorg.conf 是 X Server 的設定檔
- /etc/sysconfig 系統設定檔
- /etc/sgml SGML以及xml的設定檔
- /home 使用者家目錄,~:代表目前使用者家目錄,而~abc :則代表abc 的家目錄!
- /lib 放置在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫,/lib/modules/目錄, 會放置核心相關的模組(驅動程式)
- /lost+found 檔案系統檢查之後,所回復的檔案
- /media 可移動裝置的掛接點,如:/media/floppy, /media/cdrom
- /mnt 暫時性掛接點,用途與/media相同,有了/media之後,/mnt就用來暫時掛載用。
- /opt 額外的軟體或是套件,給第三方協力軟體放置的目錄,還可放置自行安裝額外的軟體(非原本的distribution提供的),不過自行安裝的軟體習慣放置在/usr/local目錄下!
- /proc 核心狀態目錄,這個目錄本身是一個『虛擬檔案系統(virtual filesystem)』,放置的資料都是在記憶體中,本身不佔任何硬碟空間, 例如系統核心、行程資訊(process)、周邊裝置的狀態及網路狀態。例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 。
- /root 系統管理者的根目錄,進入單人維護模式僅會掛載根目錄,因此root的家目錄與根目錄須放置在同一個分割槽中。
- /sbin 必要的系統執行檔,僅提供給管理者使用,放在/sbin目錄為開機過程中所需要的,裡面包括了開機、修復、還原系統所需要的指令。至於某些伺服器軟體程式,一般則放置到/usr/sbin/當中。至於本機自行安裝的軟體所產生的系統執行檔(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
- /selinux SELinux系統的目錄,預設為空
- /sys 核心系統中對裝置的即時資訊,是一個虛擬的檔案系統,主要記錄與核心相關的資訊。包括目前已載入的核心模組與核心偵測到的硬體裝置資訊,不佔硬碟容量!
- /tmp 暫存區
- /usr 系統工具所在的目錄,是Unix Software Resource的縮寫,系統預設的軟體(distribution發佈者提供的軟體)都會放置到/usr底下,系統剛安裝完畢時,這個目錄會佔用最多的硬碟容量。/usr的次目錄建議有底下這些:
- /usr/X11R6/ 為X Window System重要資料的目錄,X11表示最後的X版本為第11版,R6表示第6次釋出之意。
- /usr/bin/ 放置使用者可使用的指令,與/bin的不同之處在是否與開機過程有關
- /usr/include/ c/c++等程式語言的檔頭(header)與包含檔(include)
- /usr/lib/ 包含各應用軟體的函式庫、目標檔案(object file),以及不被一般使用者慣用的執行檔或腳本(script)。 某些軟體會提供一些特殊的指令來進行伺服器的設定,這些指令也不會經常被系統管理員操作, 那就會放到這個目錄。如果使用X86_64的Linux系統, 那可能會有/usr/lib64/目錄產生
- /usr/local/ 系統管理員安裝自己下載的軟體(非distribution預設),建議安裝到此,這樣會便於管理。舉例來說,distribution提供的軟體較舊,想安裝較新的軟體又不想移除舊版,可以將新版軟體安裝於/usr/local/目錄下,與原先的舊版軟體區別,該目錄下也是具有bin, etc, include, lib...的次目錄!
- /usr/sbin/ 非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)!
- /usr/share/ 放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料, 因為幾乎都是文字檔案!在此目錄下常見次目錄:
- /usr/share/man:線上說明文件
- /usr/share/doc:軟體雜項的文件說明
- /usr/share/zoneinfo:與時區有關的時區檔案
- /usr/share/misc/ 不需要在/usr/share/中建立子目錄者
- /usr/src/ 一般原始碼,核心原始碼則建議放置到/usr/src/linux/目錄下
- /var 變動的資料,包括快取(cache)、登錄檔(log file)以及某些軟體運作所產生的檔案,
包括程序檔案(lock file, run file),或者MySQL資料庫的檔案。常見的次目錄有:
- /var/cache/ 應用程式本身運作過程中會產生的一些暫存檔;
- /var/lib/ 程式本身執行的過程中,需要使用到的資料檔案放置的目錄。各自的軟體應該要有各自的目錄,如:MySQL的資料庫放置到/var/lib/mysql/,rpm的資料庫則放到/var/lib/rpm去!
- /var/lock/ 某些裝置或者是檔案資源一次只能被一個應用程式所使用,因此就得要將該裝置上鎖(lock)
- /var/log/ 登錄檔!如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。
- /var/mail/ 電子郵件信箱目錄,這個目錄也放置到/var/spool/mail/,通常這兩個目錄是互為連結檔
- /var/run/ 某些程式或者是服務啟動後,會將他們的PID放置在這個目錄
- /var/spool/ 放置一些佇列資料,這些資料被使用後通常都會被刪除。如:新信會放置到/var/spool/mail/中, 暫時寄不出去會被放到/var/spool/mqueue/中, 工作排程資料(crontab),就會被放置到/var/spool/cron/中 。
- /etc:設定檔
- /bin:重要執行檔
- /dev:所需要的裝置檔案
- /lib:執行檔所需的函式庫與核心所需的模組
- /sbin:重要的系統執行檔
2011年11月14日 星期一
硬碟與檔案系統
硬碟代號
IDE硬碟:
/dev/hdX,X為a,b,c
SCSI與SATA
/dev/sdX,X為a,b,c (部份SATA視驅動程式而定)
RAID或其他裝置,視驅動程式而定
分割區
在原有的硬碟裝置後面加上數字,如/dev/sda切了三個分割區:
/dev/sda1、/dev/sda2、/dev/sda3
dumpe2fs 觀察檔案系統 (dump filesystem information )
例如:
dumpe2fs /dev/sda2
dumpe2fs /dev/sda2 | grep "Block size"
格式化程式
mke2fs : ext2 ext3 的格式化程式
mke2fs -t ext4 /dev/sda1 //格式化為ext4的檔案系統
lsattr (顯示檔案隱藏屬性)
list file attributes on a Linux second extended file system
掛接點
/etc/fstab
file system table 對應硬體與掛接的目錄
開機時及使用mount -a 相關指令會讀取此檔
例如以下檔案:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=7e632e4d-eb08-4b16-a2a4-5e8af9442972 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda1 during installation
UUID=d7e6d3f3-add0-4df3-b6d6-6da4870b3922 none swap sw 0 0
<file system>
<dump>
參考資料:鳥哥的linux私房菜
檔案類型
- 一般檔案
d 目錄
l 連結
b block special (設備檔) 如:ls -l /dev/sda2
c character special 如:ls -l /dev/tty0
s socket 如: ls -l /dev/log
file <檔案> //顯示檔案類型
建立連結
ln A B //建立硬連結B,直接指到儲存區塊,必須在同一檔案系統下
ln -s A C //建立軟連結C,指到A的檔案名稱,不受檔案系統的限制
系統目錄
mount [-l]
mount [-t 檔案系統] [-L Label名] [-o 額外選項] \[-n] 裝置檔名 掛載點
-a :依 /etc/fstab 的資料將所有未掛載的磁碟都掛載
-l :輸入 mount 會顯示目前掛載的資訊。加上 -l 可增列 Label 名稱!
-t :檔案系統種類來指定欲掛載的類型,如:ext2, ext3, vfat, reiserfs, iso9660(光碟格式),
nfs, cifs, smbfs(此三種為網路檔案系統類型)
-n :預設系統會將掛載的情況即時寫入 /etc/mtab 中,以利其他程式的運作。但在某些情況下(例如單人維護模式)為了避免問題,會刻意不寫入。此時要使用 -n 選項。
-L :系統除了利用裝置檔名 (例如 /dev/hdc6) 之外,還可以利用檔案系統的標頭名稱(Label)來進行掛載。
-o :後面可以接一些掛載時額外加上的參數!比方說帳號、密碼、讀寫權限等:
ro, rw: 唯讀(ro) 或可讀寫(rw)
async, sync: 同步寫入 (sync) 或非同步 (async) 的,預設為 async。
auto, noauto: 允許此 partition 被以 mount -a 自動掛載(auto)
dev, nodev: 是否允許此 partition 上,可建立裝置檔案? dev 為可允許
suid, nosuid: 是否允許此 partition 含有 suid/sgid 的檔案格式?
exec, noexec: 是否允許此 partition 上擁有可執行 binary 檔案?
user, nouser: 一般來說,mount 僅有 root 可以進行,但下達 user 參數,則可讓一般 user 也能夠對此 partition 進行 mount 。
defaults: 預設值為:rw, suid, dev, exec, auto, nouser, and async
remount: 重新掛載
IDE硬碟:
/dev/hdX,X為a,b,c
SCSI與SATA
/dev/sdX,X為a,b,c (部份SATA視驅動程式而定)
RAID或其他裝置,視驅動程式而定
分割區
在原有的硬碟裝置後面加上數字,如/dev/sda切了三個分割區:
/dev/sda1、/dev/sda2、/dev/sda3
dumpe2fs 觀察檔案系統 (dump filesystem information )
例如:
dumpe2fs /dev/sda2
dumpe2fs /dev/sda2 | grep "Block size"
格式化程式
mke2fs : ext2 ext3 的格式化程式
mke2fs -t ext4 /dev/sda1 //格式化為ext4的檔案系統
lsattr (顯示檔案隱藏屬性)
list file attributes on a Linux second extended file system
掛接點
/etc/fstab
file system table 對應硬體與掛接的目錄
開機時及使用mount -a 相關指令會讀取此檔
例如以下檔案:
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda2 during installation
UUID=7e632e4d-eb08-4b16-a2a4-5e8af9442972 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda1 during installation
UUID=d7e6d3f3-add0-4df3-b6d6-6da4870b3922 none swap sw 0 0
<file system>
- 硬碟分區對應檔案,如/dev/hda1 ,
- 或標籤代號如LABEL=/boot(必須使用e2label去定義標籤代號),
e2label 裝置名稱 新的Label名稱 如: e2label /dev/hdc6 "my_test"
或使用UUID=7e632e4d-eb08-4b16-a2a4-5e8af9442972
- 掛載點,一定是目錄
- 檔案系統類型
- async/sync 非同步/同步
設定磁碟是否以非同步方式運作!預設為 async(效能較佳) - atime或noatime 讀取時是否更新檔案或目錄inode上的最後存取時間。
此欄位只有較新版的才有支援 ,可使用relative自動判斷更新的時間 - auto/noauto 自動/非自動
當下達 mount -a 時,此檔案系統是否會被主動掛載。預設為 auto - rw/ro 可讀寫/唯讀
- exec/noexec 可執行/不可執行
- user/nouser 允許/不允許使用者掛載 (不允許使用者掛載較安全)
- suid/nosuid 具有/不具有 suid 權限
- usrquota 啟動 filesystem 支援磁碟配額模式
- grpquota 啟動 filesystem 對群組磁碟配額模式的支援
- sw swap專用
- defaults 時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,預設情況使用 defaults 設定即可!
<dump>
- dump 是一個用來做為備份的指令, 0 代表不要做 dump 備份, 1 代表要每天進行 dump 的動作。 2 也代表其他週期的 dump 備份動作,
- 是否以 fsck 檢驗磁區:
- 0 是不要檢驗, 1 表示最早檢驗(一般只有根目錄會設定為 1), 2 也是要檢驗,不過 1 會比較早被檢驗! 一般來說,根目錄設定為 1 ,其他的要檢驗的 filesystem 都設定為 2 就好了。
- 某些 filesystem 是不需要檢驗的,例如記憶體置換空間 (swap) ,或者是特殊檔案系統例如 /proc 與 /sys 等等
參考資料:鳥哥的linux私房菜
檔案類型
- 一般檔案
d 目錄
l 連結
b block special (設備檔) 如:ls -l /dev/sda2
c character special 如:ls -l /dev/tty0
s socket 如: ls -l /dev/log
file <檔案> //顯示檔案類型
建立連結
ln A B //建立硬連結B,直接指到儲存區塊,必須在同一檔案系統下
ln -s A C //建立軟連結C,指到A的檔案名稱,不受檔案系統的限制
系統目錄
- /bin 放置的是在單人維護模式下還能夠被操作的指令,可被root與一般帳號所使用
- /boot 放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機設定檔。 Linux kernel常用的檔名為vmlinuz,若使用grub開機管理程式, 則會有 /boot/grub/目錄
mount [-l]
mount [-t 檔案系統] [-L Label名] [-o 額外選項] \[-n] 裝置檔名 掛載點
-a :依 /etc/fstab 的資料將所有未掛載的磁碟都掛載
-l :輸入 mount 會顯示目前掛載的資訊。加上 -l 可增列 Label 名稱!
-t :檔案系統種類來指定欲掛載的類型,如:ext2, ext3, vfat, reiserfs, iso9660(光碟格式),
nfs, cifs, smbfs(此三種為網路檔案系統類型)
-n :預設系統會將掛載的情況即時寫入 /etc/mtab 中,以利其他程式的運作。但在某些情況下(例如單人維護模式)為了避免問題,會刻意不寫入。此時要使用 -n 選項。
-L :系統除了利用裝置檔名 (例如 /dev/hdc6) 之外,還可以利用檔案系統的標頭名稱(Label)來進行掛載。
-o :後面可以接一些掛載時額外加上的參數!比方說帳號、密碼、讀寫權限等:
ro, rw: 唯讀(ro) 或可讀寫(rw)
async, sync: 同步寫入 (sync) 或非同步 (async) 的,預設為 async。
auto, noauto: 允許此 partition 被以 mount -a 自動掛載(auto)
dev, nodev: 是否允許此 partition 上,可建立裝置檔案? dev 為可允許
suid, nosuid: 是否允許此 partition 含有 suid/sgid 的檔案格式?
exec, noexec: 是否允許此 partition 上擁有可執行 binary 檔案?
user, nouser: 一般來說,mount 僅有 root 可以進行,但下達 user 參數,則可讓一般 user 也能夠對此 partition 進行 mount 。
defaults: 預設值為:rw, suid, dev, exec, auto, nouser, and async
remount: 重新掛載
2011年11月13日 星期日
linux程序
程序的觀察
ps aux <==觀察系統所有的程序資料 ps -lA <==也是能夠觀察所有系統的資料 ps axjf <==連同部分程序樹狀態 選項與參數: -A :所有的 process 均顯示出來,與 -e 具有同樣的效用; -a :不與 terminal 有關的所有 process ; -u :有效使用者 (effective user) 相關的 process ; x :通常與 a 這個參數一起使用,可列出較完整資訊。 輸出格式規劃: l :較長、較詳細的將該 PID 的的資訊列出; j :工作的格式 (jobs format) -f :做一個更為完整的輸出。
資料來源:鳥哥的Linux私房菜
訊號
kill -l 系統有哪些訊號
終止程序
ps -ef //找出PID
kill -9 PID //終止某一程序
內部程序的溝通(記憶體、號誌陣列、訊息佇列)
觀看
ipcs //interprocess communication
刪除
ipcrm
//若要kill shared memory 共用記憶體資料段 ipcrm -m shared_memory_id //若要kill semaphore 號誌陣列 ipcrm -s semaphore_id //若要kill message queue 訊息佇列 ipcrm -q message_queue_id
訂閱:
文章 (Atom)