您好,登錄后才能下訂單哦!
壓縮解壓縮
壓縮格式:gz bz2 xz zip z
壓縮算法,算法不同,壓縮比也不同
compress: filename.Z
uncompress:
不能壓縮文件夾,會將文件夾內的文件單個壓縮
gzip: .gz
gzip filename 壓縮完成后刪除源文件
gzip -d 等于 gunzip
-#: 1-9 指定壓縮比 默認為6
gunzip:
gunzip filename
zcat 臨時查看壓縮的文本文件不解壓
bzip2: .bz2
比gzip 有更大的壓縮比
使用格式相同
bzip2 filename
-d -# 都有
-k 可以保留源文件
bunzip2 :同理解壓
bzcat :
xz: .xz 同上
unxz 解壓
xzcat
xzdec 解壓
zip: zip 壓縮后的文件名 壓縮的路徑
可以壓縮文件夾,壓縮后不刪除源文件
archive:歸檔 歸檔本身不意味著壓縮
unzip :解壓
tar:歸檔工具
-c:創建歸檔
-f file.tar :操作的歸檔文件
-x :展開歸檔
--xattrs 歸檔同時保留其擴展屬性信息
-t: 不展開歸檔查看內部文件
-zxf:解壓歸檔 調用gzip
-zcf:壓縮歸檔 調用gzip
-jcf 調用bzip2
-jxf
-Jcf 調用xz
-Jxf
-z -j -J 在解壓時可以省略,壓縮時不可以
cpio:歸檔工具
read:
-p 給出提示
-t 超時時間
while 循環:
適用于循環的次數未知的場景,要有退出條件
語法:
while 條件 ;do
運行命令
done
使用顏色控制字體
echo -e \033[x;y;zm顯示文字\033[
x 字體
y 前景色
z 背景色
64,32
/lib
/lib32
IDE 133Mbps 并行
SATA 300M 600M 6G 串行
USB 3 480M 串行
SCSI SMALL COMPUTER SYSTEM INTERFACE 320M 并行總結
SAS 2.5英寸 串行
RAID:
級別,僅代表磁盤組織方式不同,沒有上下之分
條帶:0
性能提升,讀寫
冗余能力沒有
空間利用 n
至少2塊
鏡像:1
寫性能下降,讀性能上升
有冗余能力
空間利用 n/2
至少2塊
效驗碼:4 盤1,盤2,盤3 盤6,壞一塊(1-3)都可以用盤6來-去好的
輪流校驗碼 :5 輪流校驗碼存儲位置
讀寫都提升
有冗余能力
空間利用 (n-1)/n
至少3塊
1+0:先條帶再鏡像
至少4塊
0+1:先鏡像再條帶
至少4塊
JOBD:簡單增加多塊硬盤
無性能提升
無冗余能力
空間利用n
至少2塊
MD multi dsiks 模擬一個RAID
邏輯RAID
/dev/md#
mdadm:任何塊設備做成RAID
模式化命令
創建模式
-C
專用選項:
-l:級別
-n:設備個數
-a:yes/no 自動創建設備文件
-c:指定數據塊chunk大小 默認64KB
-x:指定空間盤個數
管理模式
--add,--remove,--fail
監控模式
-F
增長模式
-G
裝配模式
-A
-D --detail 查看RAID 的詳細信息
停止整列
-S --stop
將當前RAID 信息保存至配置文件
mdadm -D --scan > /etc/mdadm.conf
以后裝配就用 mdadm -A /dev/md#
watch 周期性地執行指定命令,并以全屏方式顯示結果
-n 指定周期長度,默認單位為秒,默認2秒
watch -n '命令'
lsmod 列出內核模塊
mdadm 用戶空間工具
MD:MULTI DEVICE 多設備
DM:device mapper 設備映射
邏輯設備
lvm2
快照
多路徑
vgcreate vgname 設備
-s : pe 的大小,默認為4mb
lvcreate -n lv name -L 空間大小 vg name
擴展邏輯卷
lvextend
-L 大小 邏輯卷
resize2fs
resize2fs2fs 邏輯卷 擴展到大小
-p 與物理邊界一樣大小
縮減邏輯卷
resize2fs 邏輯卷 縮減到大小
不能在線縮減,先要卸載
確保縮減后的空間大小依然能存儲原有數據
在縮減之前應先強直檢查文件,以確保文件系統一致性狀態
lvreduce -L 大小 邏輯卷
再掛載
快照卷
生命周期為整個數據時長,這段時間內,數據的增長不能超出快照卷大小
快照卷只讀
跟原卷在同一卷組內
lvcreate
-s 快照卷
-p r|w 權限
lvcreate -s -L 大小 -n 邏輯卷名 -p r /路徑
until = !while
until who | grep "hadoop" >> /dev/null ;do
sleep 5
done
echo "hadoop is logged in"
for ((變量賦值;變量范圍;變量變化)); do
循環操作
done
ping
-c 次數
-w 超時時間
awk 條件 {動作}
df -h | awk '{print $1}' awk -F 分隔符 '{print $字段序號}'
$NF是最后一個字段 ,NF是字段個數
-F 后跟分隔符匹配
CSMA/CD carrier sense multi access colision detection
載波偵聽多路訪問沖突檢測
socket 套接字 ip與port 綁定
三次握手 四次斷開 tcp 有限狀態集
A 三次握手建立TCP連接 B
1.發送 SYN=1,SN=100
2.接受 SYN=1,ACK=1,AN=101,SN=300
3.發送 ACK=1,SN=101,AN=301
A 四次斷開TCP連接 B
1.發送 FIN=1,
2.
3.
4.CLOSED
主機接入網絡
ip
mask
gateway
hostname
route
dhcp:dynamie host configuration protocol
169.254.x.x 自動地址
linux 網絡屬于內核功能
lo:本地回環
eth{0-9}:以太網卡
ppp{0-9}:點對點
5.8 /etc/modprobe.conf
alias
6.0 /etc/udev/rules.d/70-persistent-net.rules
ifconfig
-a 顯示所有接口的配置信息
ifconfig eth{0-9} ip/mask up|down
配置立即生效,但重啟后失效
網絡服務:
5.8 /etc/init.d/network start|stop|restart|status
6 /etc/init.d/networkmanager 同上
網關
route
add 添加
-host 主機
-net 網絡
-net 0.0.0.0 默認路由
route add -net 網絡 gw 下一跳地址
route add -net default gw 下一條地址
del 刪除
同上
route del -net 0.0.0.0
route -n 以數字方式顯示主機信息
網絡配置文件
/etc/sysconfig/network
網卡配置文件
/etc/sysconfig/network-scripts/icfg-eth{0-9}
DEVICE=關聯的設備名稱,要與文件名的后半部保持一致
BOOTPROTO={static|none|dchp|bootp}:引導協議,
靜態 動態
IPADDR IP地址
NETMASK 子網掩碼
GATEWAY 網關
ONBOOT 自動啟用
HWADDR mac地址與硬件一致
USERCTL {YES|NO} 是否允許普通用戶控制接口
PEERDNS {YES|NO} 是否接受DHCP中DNS的配置信息
不會立即生效,保證永久有效
路由配置文件
/etc/sysconfig/network-scripts/route-eth{0-9}
添加格式
格式,1
DEST via NEXTHOP
格式,2
ADDRESS0=
NETMASK0=
GATEWAY0=
ADDRESS1=
NETMASK1=
GATEWAY1=
DNS服務器指定 最多3個
/etc/resolv.conf
nameserver ip
本地地址解析
/etc/hosts
主機IP 主機名稱 主機別名
配置主機名
hostname 名字
立即生效,重啟失效
/etc/sysconfig/network
HOSTNAME=
永久有效
使用setup 設置效果一樣,需要重啟
ifconfig 老舊命令
iproute2
ip
link:配置網卡屬性
ip -s link show 限時統計信息
ip link set 設備 狀態
addr:協議地址
ip addr add 地址 dev 設備
ip addr del 地址 dev 設備
ip addr show
route:路由
tc 流量控制
一個網卡多個地址
網絡設備可以別名
別名不能使用DHCP
ifconfig eth0:0
/etc/sysconfig/network-scripts/icfg-eth{0-9}:{0-9}
DEVICE=eth{0-9}{0-9}
程序組成
二進制文件 /bin,/sbin
庫 /lib
配置文件 /etc
幫助文件 /usr/share/man
/etc,/bin,/sbin,/lib
都是系統啟動需要用到的目錄程序,不能單獨掛載額外分區
必須在根分區上
/usr/
/bin
/sbin
/lib
操作系統的核心功能
可以單獨分區
/usr/local
/bin
/sbin
/lib
/etc
/man
用戶使用的第三方軟件
/opt
早期第三方軟件安裝位置
/proc
/sys
不能單獨分區,內核自我管理
/dev
設備,也不能單獨分區
udev
/home 用戶數據目錄
推薦單獨分區
/root 管理員家目錄,么必要單獨分區
/var 有了他系統管理更加規范
日志信息,和運行信息,推薦單獨分區,日積月累越來越大
/boot :內核 initrd {initramfs} 只要能被找到就行,推薦單獨分區
POST ---BIOS ----MBR (BOOTLOADER)--- 找到磁盤上的內核 ---- 找根的位置
軟件包安裝器
打包成一個文件:二進制文件,庫文件,配置文件,幫助文件
生成數據庫:追蹤所安裝的每一個軟件
1,制作軟件包
2,安裝卸載升級查詢校驗
redhat suse :rpm
redhat package manager
rpm is package manager
redhat和suse 不能混用
debian :dpt
依賴關系:
前端工具:yum,apt-get
后端工具:rpm,dpt
yum:yellowdog update modifier
rpm 命令:
rpm:
/var/lib/rpm
rpmbulid:
安裝,卸載,升級,查詢,校驗,數據庫重建,驗證數據包,
rpm命名:
包組成:
主包:
bind-版本
子包:
bind-libs
bind-utils
包名
包名格式:
名稱-版本-發行號.架構.平臺.rpm
bind-major.minor.release-release.arch.rpm
第一個release是發行號,第二個release是rpm包制作者修訂用
主版本號:重大改進
次版本號:某個子功能發生重大變化
發行號:修改了部分bug,調整了一些功能
noarch 沒有針對版本
umame -a 查看內核版本
rpm包:
二進制格式:直接使用,多數使用
源碼格式:需要編譯
rpm :
1,安裝:
rpm -i 路徑/文件名
-h 已#顯示安裝進讀,50個#,每個2%
-v 詳細過程
-vv 更詳細
rpm -ivh 常用
--nodeps:忽略依賴關系,可以安裝但是無法正常使用
--replacepkgs:重新安裝,替換原有安裝
--force:重裝,覆蓋,降級 強行安裝
--test 測試安裝
2,查詢:
rpm -q 包名 : 查詢指定包
-qa: 查詢所有已經安裝的包
-qi: 查詢指定包的說明信息
-ql:查詢指定包安裝后生成的文件列表
-qc:查詢指定包的配置文件
-qd:查詢指定包的安裝幫助文件
-qf 查詢指定文件是由那個rpm包安裝生成的
-q --scripts 查詢指定包中的腳本
如果某RPM未安裝,希望查詢
-qpi
-qpa
同上
3,升級:
rpm -Uvh 如果有老版本的則升級,否則安裝
-Fvh 如果有老版本的則升級,否則退出
rpm -Uvh --oldpackage 包名 降級安裝包
4,卸載
rpm -e 包名
--nodeps
5,校驗
rpm -V 包名
6,重建數據庫
rpm
--rebuliddb 重建數據庫,一定會重建
--initdb 初始化數據庫,沒有才建立,有就不建建立
7,校驗來源合法性,及軟件完整性
ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K 包名
dsa,gpg 驗證來源合法性
sha1,md5 驗證軟件包的完整性
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
導入redhat的秘鑰
HTML HYPERTEXT MARK LANGUAGGE
XML EXTENDED MARK LANGUAGGE
XML,JSON 半結構化數據
yum倉庫中的元數據文件
primary.xml.gz
所有rpm包的列表:
依賴關系
每個rpm生成的文件列表
filelist.xml.gz
當前倉庫RPM包的所有文件列表
other.xml.gz
額外信息,rpm修改日志
repomd.xml
記錄以上上個文件的時間戳和校驗和
comps 開頭的.xml
rpm包的分組信息
為yum定義repo /etc/yum.repos.d/ 以.repo結尾的文件
[標示ID]
name= 名稱
baseurl= 倉庫路徑
ftp://
http://
file:///
enable= 是否可用
gpgcheck= 檢查簽名完整性
gpgkey= 檢查的秘鑰位置
yum
list:列表
all 全部
available 可用
installed 已裝
updates 可用更新
clean:清理緩存
repolist:顯示repoe列表
install:
-y 自動回復yes
--nogpgcheck 無檢查完整性
update:
升級到最新版本
update to:
升級到指定版本
remove|erase:
卸載
info :信息
provides:
查看指定文件或特性是那個yum安裝的
groupinstall:
grouplist
groupinfo
createrepo 手動建立yum倉庫時需要使用
在指定目錄中建立repodata
還需要復制 XML文件
rpm 安裝
二進制格式
源程序---編譯----二進制格式
有些特性是編譯選定的,如果編譯未選定此特性,將無法使用
rpm包的版本落后于源碼包,甚至落后很多
定制:手動編譯安裝
編譯環境,開發環境
開發庫,開發工具
linux :c
gun :c
C環境,c++,
gcc:編譯器
g++:
make:項目管理工具
makefile:定義了make (gcc,g++) 按何種次序去編譯源文件的程序
automake,創建---makefile.in
autoconf,創建---configure
以上兩者結合成makefile
make install
perl+java,python
編譯安裝三步驟
前提:準備開發環境{編譯環境}
安裝 Development Tools 和 development libraries
先用tar 解壓二進制程序包
cd
./configure (讓用戶選擇編譯特性,檢查編譯環境)
使用 configure --help 查看選項
使用 configure --prefix 指定安裝目錄
--sysconfdir 指定安裝的配置目錄
在安裝目錄中用 make 確認安裝
再輸入 make install
1,修改PATH環境變量,以能夠識別次程序的二進制文件路徑
1.修改/etc/profile
2.或者在/etc/profile.d 目錄中 建立以.SH為名稱后綴的文件
在里面定義export PATH=$PATH:/路徑
2,默認情況下,系統搜索庫文件的路徑/lib,/usr/lib,要額外添加搜索路徑
在/etc/ld.so.conf.d/中創建以.conf為后綴命名的文件,而后把要增添的路徑直接寫入次文件
ldconfig:重新搜索庫文件
-v:顯示重新搜索的過程
3,頭文件(庫調用的參數標準相關信息):輸出給系統,
默認:/usr/include
添加頭文件搜索路徑,使用鏈接進行
/usr/local/tengine/include/ /usr/include/
第一種 ln -s /usr/local/tengine/include/* /usr/include/
第二種 ln -s /usr/local/tengine/include/ /usr/include/tengine
4,man文件:安裝在--prefix 指定目錄下額man目錄,/usr/share/man
1,man -M man文件的路徑
2,在/etc/man.config 中添加一條manpath
netstat :網絡狀態命令
-r 顯示路由表 -rn 數字顯示
-t 顯示tcp連接
-u 顯示udp連接
-l 監聽狀態的連接
-p 監聽指定套接字的進程號與進程名
source /etc/profile 重新載入配置文件
kill 進程號 殺死進程
while ,until,for
break :提前退出循環結束任務
continue: 提前退出當前循環,繼續循環
while 特殊用法
while: ;do
done
無限循環
while read line; do 循環讀取 文件每一行 存入line中
done < 輸入重定向文件
函數,功能, function
代碼重用:
定義函數 2種方法
1. function 函數名 {
函數體
}
2. 函數名() {
函數體
|
`` 反引號,應用程序執行結果
執行結果狀態,看命令的最后一條運行結果
return # 0-255 定義函數狀態返回
接受參數的函數
函數名 參數1 參數2
$1 調用參數1
$2 調用參數2
進程管理
CPU中 MMU 內存管理單元 MEMORY MANAGEMENT UNIT
進程切換,上下文環境切換
rss 常駐內存,位于物理內存不被交換出去的
vsz 虛擬內存大小 ,棧,堆,庫,初始和為初始化數據,命令
thrend 線程 由進程拆分的多個小的組成部分, 可以節省內存的使用空間
進程狀態
uninterruptible 不可中斷的睡眠
interruptible 可中斷的睡眠
init: 內核之后的第一個進程,其他均為其子進程
優先級 0-139 共140個
進程越小越高級
100-139 :用戶控制
0-99: 內核調整
高優先級的優勢, 1,獲得更多的CPU運行時間
2,獲得優先的運行時間
每個進程都有個
nice值:友好的,優雅的
范圍-20到19
對應 100到139
nice值越小優先級越高
默認都是0
普通用戶僅能夠調大自己進程的nice值
管理員可以隨意調整
PID:process id
init:所有進程的父進程 PID 為 1
進程的相關屬性在目錄 /proc/中對應的進程號
ps:process status
BSD 風格
sysv 風格 -
a:所有和終端有關的進程
u:
x:所有和終端無關的進程
-e:所有進程
-l:
-f:
ps -o 字段 顯示指定字段
進程的分類:
跟終端相關的進程
跟終端無關的進程
進程狀態:
D:不可中斷的睡眠
R:運行或就緒
S:可中斷的睡眠
T:停止的
Z:僵尸
<:高優先級進程
N:低優先級
+:前臺進程組中的進程
l:多線程進程
s:會話領導者進程
pstree:顯示進程樹
pgrep: grep風格
-u 用戶
pidof:根據程序名查找ID號
top:
M:根據駐留內存大小排序
P:根據CPU使用時間排序
T:根據累計時間排序
l:顯示
t:顯示
m:顯示內存
c:顯示完整命令
k:殺死進程
q:退出
top -d # 顯示延遲時長
-b 翻屏顯示
-n # 指定屏幕數量顯示
進程間通信 IPC (inter process commu)
共享內存
信號:
semaphore:旗語
kill -l 查看信號
1:SIGHUP :讓進程不用重啟就可以重讀配置文件,并讓新的配置信息生效
2:SIGINT :ctrl + c ,中斷進程
9:SIGKILL :殺死一個進程 強行殺死
15:SIGTERM : 終止一個進程 完成后事后殺死 kill 默認信號
指定一個信號:
信號號碼:kill -1
信號名稱:kill -SIGKILL
信號名稱簡寫 : kill -KILL 去掉SIG就行
kill pid
killall commmand 殺死有多個進程的命令
調整已經啟動進程的nice值
renice nice值 PID renice 3 16522
調整準備啟動的nice值
nice -n nice值 command nice -n 8 top
前臺作業:占據了命令提示符
后臺作業:啟動之后釋放命令提示符,剩余工資在后臺完成
前臺--后臺:ctrl+z ,或者在命令啟動后在后臺執行,最后加&
jobs:查看所有的作業,作業號不同于進程號
bg :讓后臺停止的作業繼續運行
bg %作業號 默認為+
+:命令將操作的作業
-:命令將第二個操作的作業
fg:將后臺調往前臺
fg %作業號
終止作業用 kill %作業號
vmstat 系統狀態查看命令
vmstat 間隔 次數 vmstat 1 5
uptime
/proc/meninfo 文件 內存信息
post----bios(boot disk select )----mbr(bootloader 446k)-----kernel---initrd-----rootfs/sbin/init(/etc/inittab)
啟動的服務不同:
運行級別:0-6
0:halt
1:單用戶 single user mode 直接登錄管理員模式 1,S,s,single都可以
2:多用戶 multi usermode ,no NFS 不掛在
3:多用戶 multi usermode ,test 模式命令行
4:reserved 未定義,保留級別
5:多用戶 multi usermode ,圖形模式
6:reboot
redhat,suse
核心:動態加載,內核模塊
內核:/lib/modules/內核版本號命名的目錄
vmlinux-2.6.32
/lib/modules/2.6.32
內核設計風格:
單內核:linux LWP 輕量級進程
核心:ko kernel object
微內核:windows,solaris 線程
chroot 虛根的目錄
ldd /bin/bash 查看二進制文件的共享庫
tree
ramdisk---initrd
ramfs---initramfs
詳解啟動過程:
bootloader
LILO: linux bootloader
grub:grand unified bootloader
stage1:MBR
stage1_5: 引導文件系統
stage2:/boot/grub
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0 設置默認啟動的title編號,從0開始
timeout=5 等待的超時時長
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz 指定背景圖片
hiddenmenu 隱藏菜單
password 明文密碼
password --md5 加密密碼 (使用grub-md5-crypt 生成)
title Red Hat Enterprise Linux Server (2.6.18-308.el5) 內核標題,可以自由修改
root (hd0,0) 內核文件所在的設備,,gurb中所有設備都是(hd#,@) #表示第幾個磁盤,@表示第幾個分區
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 內核路徑和傳遞給內核的參數
initrd /initrd-2.6.18-308.el5.img ramdisk 文件路徑
gimp 圖像編輯軟件
查看運行級別
runlevel
who -r
查看內核:
uname -r
uname -a
安裝修復 grub
安裝 grub stage 1
方式1,
grub
root (hd0,0) 設置
setup (hd0,0)
quit
方法2,
grub-install --root-directory=/(boot所在的父母目錄) /device指定設備
grub 下啟動系統
find 查找 內核和initrd文件位置
root (hd0,0)
kernel
initrd
kernel 初始化過程
1.設備探測
2.驅動初始化(可能從initrd中狀態驅動模塊)
3.以只讀文件掛載文件系統
4.狀態第一個進程init (pid:1)
/sbin/init (/etc/inittab)
upstart :ubuntu開發 d bus events dirver
systemd :
id標示符:那個運行級別:動作:運行的進程
si::sysinit:/etc/rc.d/rc.sysinit
動作:
initdefault:設定默認級別
sysinit:系統初始化
wait:等待切換至此級別
respawn:一旦程序終止,會重新重啟
/etc/rc.d/rc.sysinit 完成的任務
1.激活udev和selinux
2.根據/etc/syscti.conf 設定內核參數
3.設定系統時鐘
4.裝載鍵盤映射
5.啟用交換分區
6.設置主機名
7.根文件系統檢測,并以讀寫方式掛載
8.激活raid 和 lvm 設備
9.啟用磁盤配額
10.檢查并掛載其他文件系統,/etc/fstab
11.清理過期的鎖和pid文件
l0:0:wait:/etc/rc.d/rc.sysinit
rc0.d
k*
stop
s*
start
/etc/rc.d/init.d etc/init.d
服務類腳本:
start
sysv : /etc/rc.d/init.d
start|stop|restart|status
reload|configtest
chkconfig
checkconfig: 第一組數字,啟動級別. 第二組SS啟動順序. 第三組KK關閉順序
當chkconfig命令為腳本在rc#.d目錄中創建鏈接時
runlevel s表示創建S*開頭的文件
k表示創建K*開頭的文件
S后面的數字表示優先級為SS
K后面的數字表示優先級為KK
runlevel 是- 表示所有都是K開頭的鏈接
renlevel 可以省略,默認為2345級別
description:用戶說明此腳本的簡單功能, \換行
chkconfig --list 查看所有獨立守護服務的設定,獨立守護進程
--list 服務名 查看指定服務名
--add 服務名 添加到服務列表中
--del 服務名 刪除
--level 級別 服務名 on|off
chkconfig --list httpd
chkconfig --level 2345 httpd on
/etc/rc.d/rc.local 系統最后啟動的腳本
可以把需要的命令寫入讓其運行
/etc/inittab 任務:
1.設定默認運行級別
2.運行系統初始化腳本
3.運行對應的指定對應級別下額目錄腳本
4.設定 ctrl+alt+del 的操作
5.定義ups電源
6.啟動虛擬終端(2345)
7.啟動圖形終端(5)
守護進程額類型
獨立守護進程
xinetd:超級守護進程,代理人
瞬時守護進程:不需要關聯至運行級別
大商場和專賣店
核心 :/boot/vm開頭
內核模塊:ko /lib/modules/version/
內核設計:
單內核
模塊化設計
微內核
裝載模塊:
insmod
modprobe
用戶監控和訪問內核的方式
/proc /sys
偽文件系統
/proc/sys:此目錄中文件很多是可讀寫的
/sys :某些也可以寫
設定內核參數的方法
echo 數值 > 重定向 /proc/sys/文件
sysctl -w kernel.hostname=
能立即生效,不能永久有效
永久有效,但不能立即生效,/etc/sysctl.conf
使用 sysctl -p 使內核在修改后生效
sysctl -a 顯示所有內核參數選項
內核模塊管理
lsmod 列出內核模塊
modprobe 模塊名 裝載模塊
modprobe -r 模塊名 卸載模塊名
modinfo 模塊名 查看模塊具體信息
insmod 模塊路徑 裝載模塊
rmmod 模塊名 卸載模塊
depmod 模塊路徑 設置模塊的目錄
內核中的功能除了核心功能之外,在編譯時,大多數功能都有三種選擇
1,不使用功能
2,編譯成內核模塊
3,編譯進內核
如何手動編譯內核
make gconfig:ghome 桌面環境使用,需要安裝圖形開發庫 yum grouplist 安裝
make kconfig:kde 桌面使用
make menuconfig 文本方式
make
make modules_install
make install
screen命令
screen -ls 列出已經建立的會話
screen 新建屏幕
screen -r ID 可以還原屏幕
ctrl+a,d 拆除屏幕
exit 退出
二次編譯時清理,清理前,如果需要,請備份配置文件.config
make clean
make mrproper
mkinitrd initrd文件路徑 內核版本號
mkinitrd /boot/initrd-`uname -r`.img `umane -r`
file=/etc/init.d/acpid
echo ${file##*/} 從左向右最后一次匹配 / 刪除
acpid
echo ${file#*.} 從左向右第一次匹配 . 刪除
d/acpid
echo ${file##*/*/}
acpid
echo ${file%.*} 從右向左 第一次匹配 . 刪除
/etc/init
echo ${file%%/*} 從右向左 最后一次匹配 / 刪除
空
系統啟動流程
post---bios(boot device)---bootloader(mbr)---
kernel(initrd|initramfs)---init(/etc/inittab|)-----rootfs/sbin/init
/etc/inittab
設置默認運行級別
系統初始化 /etc/rc.d/rc.sysinit
運行指定級別的腳本
/etc/rc.d/init.d
/etc/rc.d/rc#.d
k
s
00-99:運行次數
啟動虛擬終端
啟動圖形終端
/etc/rc.d/rc.sysinit
檢測并以讀寫方式掛載根文件系統
設定主機名
檢測并掛載fstab中的文件系統
啟動SWAP分區
初始化外圍硬件的設備驅動
根據/etc/sysctl.conf 設定內核參數
激活udv和selinux
激活udev和selinux
清理過期的鎖和pid文件
狀態鍵映射
RELE 6
UPSTART --init
/etc/inittab
/etc/init/*.conf
內核初始化
硬件探測
裝載驅動
掛載根文件系統
啟動用戶空間的第一進程init
1,關機和重啟
shuntdown
halt
reboot
poweroff
2,主機名
3,運行對應的服務腳本
4,啟動終端
5,運行用戶
6,定義單用戶級別
7,狀態網卡驅動
8,提供一個WEB服務器
busybox
kernel
制定安裝
自動化安裝
定制引導盤
mount -n 掛載時不更新/etc/mtab文件
cat /proc/mounts 可以查看當前系統掛載的fs
mingetty 創建終端登錄 運行后會調用 /bin/longin 登錄提示符
腳本編程
變量中字符的長度,$(#變量名)
終端提示信息
/etc/issue 文件的內容
設定內核參數
/etc/sysctl.conf
sysctl -p
用戶
PAM
/etc/pan.d/*
繞過PAM:
/bin/login:
login:驗證
nsswitch NETWORK SERVICE SWITCH
名稱解析開關
框架:
庫:libnss_file.so,
配置文件:/etc/nsswitch.conf
確定了去×××用戶密碼
/etc/passwd /etc/shandow
/root/.bash_profile 中的環境變量
PS1= '[ \u @ \h \W]\$'
單用戶模式
exec init S
內核編譯
busybox
kernel+rootfs
kernel+initrd(busybox)+rootfs(busybox)
查看本機硬件信息
1. cat /proc/cpuinfo
2. lsusb
3. lspci
4. hal-device
內核配置
make menuconfig
make gconfig
make kconfig
make config
報錯為.config 文件
make
make modules install
make install
模塊安裝位置,/lib/modules/內核版本號/
部分編譯
1,只編譯某子目錄下的相關代碼:
make dir/
make arch/
make drivers/net/
2,只編譯部分模塊
make M=drivers/net/
3,只編譯某一模塊
make /drivers/net/pcnet32.ko
4,將編譯完成的結果放置別的目錄
make O=/tmp/kernel
如何編譯busybox:
交叉編譯
make arch=平臺格式
$ {變量:-對應值} 如果變量為空或者未定義,則變量展開為"對應值",否則,展開為變量的值
$ {變量:+對應值} 如果變量為空或者未定義,無操作,否則,展開為"對應值"的值
$ {變量:=對應值} 如果變量為空或者未定義,則變量展開為"對應值"并將展開為變量的值
A=HELLOWORD
ECHO ${A:2:3} 第一個數字表示略過幾個,第二個數字表示之后的長度
LLO
/etc/rc.d/init.d/服務腳本
服務腳本支持配置文件: /etc/sysconfig/同名服務腳本
mktemp
創建零時文件或目錄
mktemp /tmp/file.XX X是隨機生成的數值
mktemp -d 零時目錄
信號:
kill -信號 PID
1:HUP
2:INT
9:KILL
15:TERM
腳本中的信號捕捉,但是9和15無法捕捉
ctrl + c: 2 INT
trap命令
trap `command` 信號列表
一行中執行多個語句,命令中間加: 即可
任務計劃
在未來的某一點執行一次某任務
at
batch
at 時間
at>命令
at>ctrl + d
指定時間的方法
10:20
now+3m
noon中午,midnight午夜,teatime下午四點
at -l =atq 顯示執行列表
at -d =atrm 刪除
命令的執行結果,將以郵件的形式發送給安排任務的用戶
batch 系統空閑時自動執行
/etc/at.allow /etc/at.deny
周期性的執行
cron:自身是個不間斷的服務
anacron:cron的補充,能夠實現讓cron因為各種原因在過去的時間該執行的任務恢復正常執行一次
cron:
系統cron任務
/etc/crontab
分 時 天 月 周 用戶 任務
用戶cron任務
/varspool/cron/用戶名
分 時 天 月 周 任務
時間的有效期
時間通配符表示
*:應對所有有效的取值
3 * * * * 每小時的第3分鐘
22 4 * * 0 每周日的4點22分
,:離散時間點
10,40 * * * * 每小時的10分和40分執行,半小時任務
-:連續時間點
10 02 * * 1-5 每周1-5的2點10分
/:對應取值范圍內的每多久一次
*/3 * * * * 每3分鐘一次
每2小時執行一次
0 */2 * * *
每2天執行一次
0 0 */2 * *
執行結果將以郵件形式發送給管理員
*/3 * * * * cat /etc/fstab &> /dev/null
cron的環境變量:執行的所有命令都去PATH環境變量指定的路徑下找
PATH /bin /sbin /usr/bin /usrsbin
管理用戶任務
crontab
-l:查看
-e:編輯
-r:移除所有任務
-u:用戶名 -e 管理其他用戶的cron任務
移除一個任務,打開編輯刪除即可
anacron:
/etc/anacrontab
第一項 第二項 第三項 第四項
多少天么運行 開機后多少時間運行 注釋 命令
使用時需確保 crond service 開啟
make acrh/
arch/x86/boot/bzImage 編譯好的內核文件存放位置
硬件驅動:initrd
initrd:僅需提供訪問真正根文件系統所在設備的驅動
存儲設備和文件系統相關的模塊
系統初始化rc.sysinit:提供其他硬件的驅動:
ROOTFS:busybox 的INIT 不支持運行級別
/etc/inittab 格式也不盡相同
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。