/etc/init.d是/etc/rc.d/init.d文件夾的軟連接,這個文件夾的主要做用是在該目錄下尋找服務腳本,而且根據腳本的run level肯定不一樣的啓動等級。即本質上,該文件夾內是各類各樣的shell腳本。linux
CentOS和Ubuntu,須要在兩個版本中均可以開機啓動服務。但Ubuntu沒有 /etc/rc.d/init.d這個目錄,因此,爲了保持同一種服務在CentOS和Ubuntu使用的統一性,將服務腳本(注:服務腳本在兩個不一樣版本中是不一樣的)都放在 /etc/init.d 目錄下,最終達到的效果是相同的web
檢查、設置系統的各類服務,能夠查詢操做系統在每個執行等級中會執行哪些系統服務,包括各種常駐服務。shell
謹記chkconfig不是當即禁止或者激活一個服務,而是簡單改變了符號鏈接。apache
等級代號列表: 等級0表示:表示關機 等級1表示:單用戶模式 等級2表示:無網絡鏈接的多用戶命令行模式 等級3表示:有網絡鏈接的多用戶命令行模式 等級4表示:不可用 等級5表示:帶圖形界面的多用戶模式 等級6表示:從新啓動swift
普通用法不用在乎引號windows
grep match_pattern file_nametomcat
grep "match_pattern" file_namebash
正則使用 grep –E 或者直接使用 egrep均可以服務器
#!/bin/bash網絡
read name
echo 「$name is a test」
echo -e "OK! \n"
echo -e "OK! \c"
echo "接上面"
echo `date`
printf使用相似於c的該函數
test命令用於檢查某個條件是否成立,它能夠進行數值,字符和文件三個方面的測試
#!/bin/bash
num1=100
num2=100
if test $num1 -eq $num2
then
echo "equal"
else
echo "not equal"
fi
表示擴展的正則匹配方式,其中的/之類的不用轉義
例子:echo ${_current_path} | sed -r "s#/root/(.*)/action.*#\1#g"
# 分隔符
() 取值符,匹配全部
\1 第一個取值
實例1:顯示磁盤使用狀況
命令:
df
輸出:
[root@CT1190 log]# df
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/sda7 19840892 890896 17925856 5% /
/dev/sda9 203727156 112797500 80413912 59% /opt
/dev/sda8 4956284 570080 4130372 13% /var
/dev/sda6 19840892 1977568 16839184 11% /usr
/dev/sda3 988116 23880 913232 3% /boot
tmpfs 16473212 0 16473212 0% /dev/shm
linux中df命令的輸出清單的第1列是表明文件系統對應的設備文件的路徑名(通常是硬盤上的分區)
最後一列是掛載點,表示的是一個目錄
linux就是把各類文件,包括磁盤分區之類的都往目錄結構上進行掛載,linux默認有三個分區,即boot分區,swap分區和根分區,這些分區由對應的物理存儲空間,可是須要目錄結構來進行訪問,故就分配了/boot等目錄預支對應
建立文件系統,命令是mkfs,在windows下一般叫格式化。建立文件系統這個操做通常針對的設備是分區,就是上文中說到的partition。固然也能夠是某個文件,具體用法能夠參見man mkfs。
一個例子
df -h
/dev/mapper/VolGroup-lv_root 39G 17G 21G 44% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 780K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/xvda1 488M 34M 419M 8% /boot
tmpfs 782M 0 782M 0% /run/user/0
[root@dbs_gauss1 ~]# fdisk -l
Disk /dev/xvda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00017f27
Device Boot Start End Blocks Id System
/dev/xvda1 * 2048 1050623 524288 83 Linux
/dev/xvda2 1050624 16777215 7863296 8e Linux LVM
/dev/xvda3 16777216 83886079 33554432 8e Linux LVM
Disk /dev/xvde: 429.5 GB, 429496729600 bytes, 838860800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/VolGroup-lv_root: 42.4 GB, 42404413440 bytes, 82821120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
這裏能夠看到,/dev/xvda磁盤被分爲了3個分區,其中/dev/xvda1是做爲了/boot分區來使用的,做爲整個linux的啓動分區。而其餘兩個分區沒有被使用到
另外一塊磁盤/dev/mapper/VolGroup-lv_root做爲了主硬盤,沒有進行分區,直接掛載到了/根目錄
tmpfs文件系統,是一種基於內存的虛擬文件系統,通常掛載在目錄/dev/shm下,載redhat中默認使用物理內存的一半
明白三個概念:設備,分區,目錄!
在linux當中,每個設備都是用/dev文件夾下的一個文件來進行表示的
其中第一列的信息
如果文件系統或者是分區信息時,格式爲 /dev/xxyN:dev是表示設備目錄,xxyN是分區名
l /dev/表明設備所在的目錄名。由於分區在硬盤上,硬盤是設備。而/dev/以後的全部這些文件表明全部可能的分區
l xx分區名的前兩個字符表明分區所在設備的類型,例如hd(IDE磁盤)或者sd(SCSI磁盤)
l y代表分區所在的設備的編號,例如/dev/had(第一個IDE磁盤)或/dev/sdb(第二個SCSI磁盤)
l N表示分區編號,主分區1~4(擴展分區只能有一個,即四個主分區中僅有一個可以成爲擴展分區),邏輯分區從5開始(擴展分區由全部的邏輯分區構成,邏輯分區理論上可有無限多個)
掛載的本質就是將分區關聯到某一個目錄的過程
一個目錄的子目錄能夠被再次掛載到其餘分區上
linux和windows最大區別在於,linux中硬件就是硬件,路徑就是路徑,然後者則是混淆在一塊兒的。
fdisk -l
fisk /dev/sdb
輸入m查看幫助菜單
輸入p,設置爲主分區
輸入1,設置爲分區號
直接回車,選擇默認起始扇區
直接回車,選擇默認結尾扇區
輸入w,保存分區設置
mkfs.xfs -f /dev/sdb1
mount /dev/sdb1 /home/data
若是掛載點不存在,則須要先進行目錄的建立
df -TH /home/data
/dev/sdb1 /home/data xfs defaults 0 0
useradd leichuang
passwd 123456789
查看文件的權限的詳細信息
stat -c %a /var/rds/tomcat/conf/server.p12
600
查看文件的權限,而且以校驗數字碼的方式進行輸出
http://blog.csdn.net/yu412346928/article/details/21622029
當前用戶臨時切換到超級用戶下,以超級用戶的權限去執行指定的命令。sudo所須要輸入執行sudo命令的用戶自身的口令,而非root用戶口令。這樣,即便你偶爾離開,但終端依然不會被居心險惡的人利用。
黨用戶執行sudo時,系統會去尋找/etc/sudoers配置文件,判斷當前用戶是否具有使用root的資格。對該配置的修改主要依靠命令visudo進行,其中的語法以下
user host = commands
User_Alias
Host_Alias
Cmnd_Alias
user表示使用者(這裏也能夠填入group名,在組名前加%),host是登陸主機的方式,而commands是具體命令
例如
switf localhost = /usr/bin/emerge
表示用戶swift能夠在本地(非ssh鏈接的狀況下)使用emerge命令
%wheel localhost = /usr/bin/emerge, /usr/bin/ebuild, /usr/sbin/emerge-webrsync
標示wheel組同時具備3條命令的權限
Host_Alias hostalias = hostname1, hostname2, ...
User_Alias useralias = user1, user2, ...
Cmnd_Alias cmndalias = command1, command2, ...
爲了避免頻繁輸入各個用戶名,能夠定義一些別名
通用別名ALL 代指全部可能的設置。
代碼 2.8: 容許任何用戶在非ssh時執行 shutdown |
||
ALL localhost = /sbin/shutdown
|
讓一名用戶像其餘用戶(非root用戶)那樣地運行程序是可行的。這很是有趣,你可使用另外一個用戶(譬如網絡服務器apache)的身份來運行程序或執行一些系統管理操做(好比殺死僵死進程)。
在/etc/sudoers文件中,在命令列表以前,能夠在( 與 )之間列舉須要改變身份的用戶。
代碼 2.12: 非root用戶命令執行權限示例 |
Cmnd_Alias KILL = /bin/kill, /usr/bin/pkill swift ALL = (apache, gorg) KILL |
使用這一設定,用戶能夠運行sudo -u來選擇他想擔當的角色
代碼 2.13: 像apache用戶那樣運行pkill |
$ sudo -u apache pkill apache |
可使用Runas_Alias指令爲這些要切換身份的用戶設置別名,它的用法與前面所講的別名設置指令的用法類似。
默認狀況,sudo要求用戶提供本身的登陸口令來作身份驗證。一旦輸入了相應口令(密碼),sudo會記憶它5分鐘,用戶要把任務集中在這段時間內來完成,不然就要每5分鐘重複輸入一次口令。
固然,這種默認行爲是能夠改變的:能夠在/etc/sudoers中設定Defaults:指令來修改一名用戶的默認行爲。
例如,要將默認的5分鐘修改成0分鐘(即不記憶所輸入口令):
代碼 2.14: 更改時限 |
Defaults:swift timestamp_timeout=0 |
若是將timestamp_timeout設置爲-1,sudo會永遠記住用戶口令,直至系統從新啓動。
有一個設置能夠在使用sudo時要輸入所執行命令的所屬用戶口令,而不是執行sudo命令的用戶口令。這一功能可由runaspw指令進行設定。下面示例演示了runaspw的用法,同時也演示了重複輸入口令次數限制的設定方法
代碼 2.15: 須要root口令而非用戶john的口令 |
Defaults:john runaspw, passwd_tries=2 |
還有一個有趣的功能是保持DISPLAY變量不變,這樣就能夠運行一些X Window工具了:
代碼 2.16: 保持DISPLAY變量的值不變 |
Defaults:john env_keep=DISPLAY |
使用Defaults:指令能夠更改許多默認設置,要知詳情,可在sudo手冊中搜索Defaults。
若是很想容許一名用戶使用sudo運行一些程序時無需輸入任何口令,應當在命令列表前冠以NOPASSWD:,例如:
代碼 2.17: 容許像root那樣使用emerge,而無需口令 |
swift localhost = NOPASSWD: /usr/bin/emerge |
列出權限
運行sudo -l能夠查看當前用戶的sudo權限:
代碼 3.1: 列出權限 |
$ sudo -l User swift may run the following commands on this host: (root) /usr/libexec/xfsm-shutdown-helper (root) /usr/bin/emerge (root) /usr/bin/passwd [a-zA-Z0-9_-]* (root) !/usr/bin/passwd root (apache) /usr/bin/pkill (apache) /bin/kill |
若在/etc/sudoers中設定了任何命令都不須要輸入口令,那麼在使用sudo -l時也不須要輸入口令。不然,在口令未被sudo記憶時,依然要輸入相應口令。
延長口令時限
默認狀況下,sudo的驗證口令會維持在5分鐘內有效。若是用戶想延長這一時間,能夠運行sudo -v重設時間戳,這樣就會又開始一個5分鐘口令記憶時間。
代碼 3.2: sudo口令時限延長 |
$ sudo -v |
相反,若要停掉當前時間戳,可以使用sudo -k.
# Defaults env_keep += "HOME"
註釋此行的意思是,sudo運行某條命令時獲取到的HOME路徑是該用戶本身自己的HOME路徑
always_set_home: Always set $HOME to the target user's home directory