一.Linux用户环境
1. [root@test ~]#
root用户@主机名 path #//root, //$normal
2. useradd jack //添加用户
passwd jack
//激活用户, 更改密码
帮助
mknod –help
man
/usr/share/man存放在这里了
man 1 passwd//指令帮助, 不写1,默认进入1
man 5 passwd//文件帮助
info
二.Linux基础操作
1. touch 更新系统时间
三.Linux 基础操作
1. more 逐页, 只能网下翻
less 逐行, 上下翻
date 时间
cal
月历
df -h
du -h xxx
head 20 xxx
Tail 默认最后10行
Tail -f file 查看file的即时更新
2. 设备文件在/dev下
C
char设备
B
block设备
3. alt + fn切换tty
/etc/inittab Tty1-tty6, 可以吧5,6注释掉, 这样5,6没有用
4. Su jack
//不安全, 环境变量不会更改
Su – jack//安全, 环境变量会跟着改变
重启 reboot , shutdown-r now, init 6(运行等级6)
关机 halt, shutdown-h now, poweroff, init 0
四.Linux基础操作
File 指令 查看文件属性
五.
六.链接
硬链接
ln 源文件 新建链接名//指向相同物理地址, 不能跨文件系统, 不可以是目录
软链接
ln -s 源文件 新链接名//快捷方式, 可以跨文件系统, 也可以是目录
在ext2和ext3文件系统中, 文件以inod+block方式存在, 一旦用rm指令删除文件中的inode记录, 文件将无法找回.
Stat指令可以检查文件的block和inode状况
chown改变拥有者//root用户
chown xiaowang(用户) install.log
chgrp改变所在组//root用户和文件拥有者可以改
chgrp xiaowang install.log
另一种方法chown root(拥有者):root(组拥有者) install.log
七.目录
.和..文件是当前目录和上级目录的硬链接
八.九.
十
默认权限的值是由环境中的umask值来决定的.
文件-rw-rw-rw
目录-rwx-rwx-rwx
一般用户002, 系统用户默认是022//默认值-umask值
umask (-S) //need practice
十一
过滤器, 交互工具, 编辑器
过滤器:
输入:::过滤器的数据来源
—标准输入stdin(0):默认键盘
//
/dev/stdin
输出::过滤器的数据去向
//
—标准输出stdout(1):默认是终端屏幕
//
/dev/stdout
错误输出—标准错误输出stderr(2):默认是屏幕//
/dev/stderr
重定向:
输入重定向, 用< 来重定向输入源.
Command < file(原本需要键盘输入的, 通过文件来读取)
tr ‘A-Z’ ‘a-z’ < .bash_profile
//TBD. Tr指令是大写改成小写…
可以将 tr 看作为 sed 的(极其)简化的变体
tr -c -d -s [“string1_to_translate_from”] [“string2_to_translate_to”] < input-file这里:-c complement
用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。-d delete 删除字符串1中所有输入字符。-s squeeze (squeeze-repeates)删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
应用例子
(1)去除oops.txt里面的重复的小写字符tr -s “[a-z]”<oops.txt >result.txt
(2)删除空行tr -s “[\012]” < plan.txt 或 tr -s [“\n”] < plan.txt(3)有时需要删除文件中的^M,并代之以换行tr -s “[\015]” “[\n]” < file 或 tr -s “[\r]” “[\n]” < file //关于回车和换行
(3)有时需要删除文件中的^M,并代之以换行
tr -s “[\015]” “[\n]” < file 或 tr -s “[\r]” “[\n]” < file //关于回车和换行
(4)大写到小写cat a.txt |tr “[a-z]” “[A-Z]” >b.txt
(5)删除指定字符
一个星期的日程表。任务是从其中删除所有数字,只保留日期。日期有大写,也有小写格式。因此需指定两个字符范围[a-z]和[A-Z],命令tr -cs “[a-z][A-Z]” “[\012*]” 将文件每行所有不包含在[a-z]或[A-Z](所有希腊字母)的字符串放在字符串1中并转换为一新行。-s选项表明压缩所有新行, -c表明保留所有字母不动。原文件如下,后跟tr命令:tr -cs “[a-z][A-Z]” “[\012*]” <diary.txt //-c是from字符串的补集
使用<<让系统将一次键盘的全部输入,先送入虚拟的’当前文档’, 然后一次性输入
cat > cat.file <<!
>this is test
>!
//结束输入
//TBD. Tr指令是大写改成小写…
输出重定向
使用>改变数据的输出目标
ls-l > test
//不行
Ls-l 2> test //2代表标准错误输出 TBD. Tr指令是大写改成小写…
十二.
双重重定向
find /etc -name passwd 2> stderr > stdout
//分开重定向
find /etc -name passwd &> allout
//正确和错误都重定向
or find /etc -name passwd > allout 2>&1
//2>&1,的意思是将错误输出定向到和1一样的输出设备
cmd >a 2>a 相当于使用了FD1、FD2两个互相竞争使用文件 a 的管道;
而cmd >a 2>&1 只使用了一个管道FD1,但已经包括了stdout和stderr。
管道可以吧一系列的命令连接起来
使用 | 将前一个过滤器的输出直接送入后一个过滤器的输入.
允许多重管道
cat < filea > fileb(把filea当成cat的输入, 然后重定向到fileb)
cat file.* > file, 将多个file开头的文件合并成一个file
十三.文件的查找和管理
可执行文件的搜索
Which
显示可执行文件的完整路径
按照alias(别名) -> &PATH(系统文件)顺序查找
系统别名记录
Which ls
Alias ls(别名)=’ls –color=tty'(完整指令)
/bin/ls
系统路径 echo $PATH
Whereis
//更完全
搜索到相关帮助信息, 配置信息
Whereis ls
slocate/locate 一样的, 但是有个数据库要更新先
find //重点
Find 路径 参数 表达式
-user
-group
-nouser
-nogroup
-name
-perm
-size +1000k 大于1M的文件
-type f
file文件
-type b
块设备文件
-type l
链接文件类型
-type c
字符设备文件
Find /root/test –perm 6000 –exec chown jack.jack {} \;
{}标识查找到的对象
\ 禁止转义
十四,
-perm
权限
//find /home -perm 0644 -exec chown jack.jack {} \;
Exec后面可以接额外的命令
{} find 找到的结果
\
禁止转义
; 表示本行结束
十五(wc…家看过的, diff…)
Wc abc
4 3 7 abc
4//行
-l
3//3个字符
-w
7//个字符数
-c
Grep “a” abc
-n
number
show出行号
-v
反向选择, 没有”a”的那行
Sort
-r
reverse
反向排列
-t
设定栏位间间隔符号
sort -t: -k3 /etc/passwd
-k
将那一栏做排列
Diff
报告文本间差异内容
Diff ABC abc
2c2
第二行不一样
<B
//第一个文件
———-
>b
//>代表第二行文件
Uniq a
//去掉相同的行, 做完后 a文件不会改变, 只是改变了输出
一般
sort file | uniq
//源文件不变, 只是改变了输出
Cut
-f3(第3栏) cutfile
//显示某一列
Cut -f2 -d, cutfile
//-d是以什么分隔
Cut -c4-8 cut1
//第4个-第8个字符之间
Paste abc ABC > merge
//水平方式贴在一起, 用tab间黏贴一起
Cat abc ABC > merge //垂直方式贴在一起..
十六压缩,
Gzip, gunzip//标准, 不能对文件夹压缩, 但可以配合tar对文件夹压缩
Compress, uncompress//旧的unix
Bzip2, bunzip2//新, 压缩高
Gzip services
//原来文件没了
=>产生 services.gz
Gunzip services.gz
Gzip -d services.gz
//也可以解压缩
Zcat services.gz
//查看 .gz的文件里面的内容
Bzip2 services
=>产生services.bz2
/原来文件没了
Bunzip2 services.bz2
Bzip2 -d services.bz2
Bzcat xxx.bz2
//查看压缩包里面的内容.
Tar 标准打包命令
C:
备份
V:
过程显示出来
X:
解开文件
F:
表示打包后的文件名
………..不提供压缩功能
Tar cvf test.tar test
十七
Dump/restore
备份整个文件系统ext2/ext3
Dump -0u –f /var/tmp/hda2dump /dev/hdal
0: 0-9, 0代表完全备份
-u:
只有备份分区顶层目录才能用, /etc/dumpdataes 写有备份记录
-f:
指定备份路径文件
Restore –rf /var/tmp/hda2dump
//恢复备份文件, 还原到当前路径
Restore –tf /tmp/install.log.dump
//t列出备份文件的内容
十八
/etc/shells文件指定了系统支持的所以shell
Nologin是指, 如果某个用户名指定了nologin, 这个用户就不能登录我们linux系统
Bash是default的shell
Csh类似C的语法
Bash: Bourne Again Shell缩写
变量赋值:
a=book
Echo $a
Or Echo ${a}
//推荐这种方式, 避免混淆
Unset a
本地变量
//当前
环境变量
//全部
Set
显示所有变量
Env
显示环境变量
预定义环境变量:
HOME: 当前用户主目录
PATH: 当前用户可执行文件搜索路径
LANG:
默认语言
//出现乱码, LANG=en试试看, locale –a查看支持的语系
PS1:
行提示符
[\u@\h \W]\$
十九bash
\d
日期
\H
主机名
\h
主机名称的第一个单词
\t
时间24小时时间, 时, 分, 秒
\T
时间12小时格式
\A
24小时格式, 只显示小时分
\u
当前用户的账户名称
\v bash的版本信息
\w
目录名称, 家目录会以 ~代替
\W
利用basename取得工作目录名称,所以只会列出最后一个目录
\$
提示字符,如果是root时,提示符为:# ,普通用户则为:$
\#
下达的第几个命令
Export 将一个指定的变量转化为环境变量
export a
二十bash history
History命令
History 10 列出最后10个指令
根据环境变量HISTSIZE
当用户logout会写入.bash_history中, 下次在载入, 这个文件里存放的指令数是HISTFILESIZE环境变量决定
History –w强制写入.bash_history文件中.
调用过往指令
使用!
!!:重复执行上一条指令
!a:重复执行上一条以a为首的指令
!number:重复执行以number号码的指令
!$ 截取上一条指令的最后一项
例如 ping !$ 就可以很方便
二十一 alias [?eili?s] 别名, 化名
Bash里面的别名
alias a=’ls -al’
unalias a
命令行表达式
“”
命令行输出, 当成字符串
Echo “${PWD}”
Echo “\$PWD”
‘’ 字符串, 但是特殊符号也是当成一般符号对待
Echo ‘${PWD}’
“
引用命令的执行结果
Ls –al `pwd`
二十二
数学计算—-$[]
在[]里面会被计算
Echo $[1+4]
逸脱符
\
(1)取消命令行中字符的特殊含义(2)表示一行未结束
mkdir a\ b
//取消命令行中字符的特殊含义
ls \
//一行太长, 表示一行未结束
命令行结束符
;
//一行类风格好几个独立的命令
ls;pwd;ls –al
子shell 激活
()
//激活子shell, 在子shell内运行
(HOME=/usr)
一般用于shell 脚本
&&
当钱一条指令成功时候执行后一条指令
ls /home && touch /home/test1
||
当前一条指令失败时候执行后一条指令
ls /root/test1 || mkdir /root/test1
二十三
ls /root/test && echo “exist” || echo “not exist”
//同时有&&, ||
ls /root/test || echo “not exist” && echo “exist”
//&&指前面一条指令执行成功
所以一般是需要现&&, 再||, 不然不能起到判断作用
登录shell时候是从配置文件中获取shell的环境设置
登录shell/非登录shell的概念
四个文件读取环境设定:
全局设置文件:
/etc/profile
PATH, MAIL…
/etc/bashrc
掩码的功能, PS1
用户设置文件:
~/.bashrc
~/.bash_profile
其他
~/.bash_logout, logout时候自动执行
~/.bash_history, history相关
/etc/profile.d/*.sh, 在etc/profile中执行, 其中环境设定, 也会被全局引用
二十四
登录shell读取设定文件的顺序
/etc/profile
/etc/profile.d/*
~/.bash_profile
~/.bash_rc
/etc/bashrc
//有些版本linux没有这个文件
现设置的变量会被后设置的变量覆盖…
非登录shell
su jack开启一个非登录shell
Su –jack 重新开启一个登录shell
~/.bash_rc
/etc/bashrc
/etc/profile.d/*
快捷间:
Ctrl +D 输入结束, 相当于shell的exit
Ctrl +C 键盘中断请求
二十五 系统监视
Uname:
显示系统消息
uname -a
Hostname:
显示主机名称
Last:
最近的用户登录
Lastlog:
列出每个用户最近登录状况
Free:
内存
如果物理内存, swap(虚拟内存)都很高, 系统就是不够用
Top
动态显示进程使用状况, 每5秒更新一次
两部分:
(1)整个系统状况, 6行
1启动时间, 几个用户在登录, load average(平均负载, 1分钟, 5分钟, 10分钟)
2当前进程数量
3 CPU负载, id值 越接近100%, 使用的越少, idle
4 物理内存
5 虚拟内存
6 可以输入命令
(2)每个进程使用的资源状况
PID, User
PR,
priority, 越小, 越高
NI,
nice, .越小, 越早执行
S,
运行状况, S-sleep, R-running
%CPU
TIME+ CPU使用时间的累加
二十六
Top –d 3
//每3秒更新一次状态
Top –b –n 2 > test.top
//执行2次,输出到test.top
//-b批处理, n几次top的结果
Top的按键命令
P
//CPU使用率来排序
M
//memory使用率排序
N
//PID大小排序
T
//CPU执行累计时间排序
查询进程指令 ps
-A -e
作用一样, 显示所以进程
-a
显示所有进程, 但不会显示与终端有关进程
-u
有效用户相关
-x
(与-a一起使用), 显示完整消息
-l
长模式(详细模式)显示
-f 完整方式显示
二十七
ps aux (不用-)
VSZ使用多少的虚拟内存, 单位是KB
RSS占用的固定内存量, 单位是KB
TTY表示是在哪个终端上运行的, 如果与终端无关则显示?
STAT运行状态, S-sleeping, R-running, T-停止了, Z-僵尸进程,
S<,
<代表优先级, 高优先级
N代表低优先级
ps –ef
ps –l
F:4, root用户
UID:0, root用户
Pstree可以用来以树状方式显示父子关系
pstree –a , 以ASCII码字符来连接
pstree –aup, 加上进程号, 所属用户
Top系统监视工具
gnome-system-monitor
二十八
Top &
Kill –l
//list出来所有信号
1) SIGHUP
重新启动
2) SIGINT
ctrl+C 中断执行
9) SIGKILL
强制kill
15) SIGTERM
kill默认传送15, 正常的方式结束进程
Eg. kill -SIGKILL 11800
Killall -SIGKILL 11800
进程优先级, 用nice表示
//负值表示高优先值, -20~19
一般用户只能指定正nice值, root用户才能设定负值的nice值
nice –n num command
//以一个不同的nice 值来运行指令
renice –n pid
//改变一个运行进程的nice值
二十九
在top指令命令里面修改nice值
r, 输入pid, 输入新的nice值
前台, 独占shell, 并拒绝其他输入
Command &: 丢入后台运行
Nohup command &: 直接丢入后台, 而且在这个控制台退出后, 进程不挂断
Ctrl + Z, 暂停, 丢入后台
Jobs
列出后台的进程.
[root@localhost water]# jobs –l
+, -优先级, fg会把有+的作业拉到前台.
[1]- 12044 Stopped (tty output) top
[2]+ 12054 Stopped (tty output) vi ttt
三十
Fg
移到前台
front
fg %1
//1是作业号, %可以
Bg
激活后台暂停的进程
bg 1
/proc
虚拟文件系统, 不在硬盘上, 在内存里面
/proc/kcore是当前运行内核的一个镜像, 不能用cat读取, 会造成当前中断无法使用
/proc/cmdline加载内核执行的相关参数
/proc/devices
内核主要设备的代号
/proc/filesystems
当前系统已经加载的文件系统
/proc/dma
硬盘dma的设置
/proc/interrupts
IRQ的分配状态
/proc/ioports
输入输出的设置
/proc/loadavg
系统负载的变更值
Top指令看到的负载值, 1分钟的, 5分钟的, 10分钟的
/proc/meminfo
/proc/cpuinfo
/proc/modules
/proc/mounts
/proc/swaps
系统挂载的内存放在哪里, 虚拟内存
/proc/uptime
uptime这个指令相关的内容
/proc/version
uname –a指令相关
/proc/vmstat
虚拟内存的使用状况
目录:
/proc/sys
内核的一些配置参数
/proc/数字 PID号码, 读取进程信息的接口
三十一
[root@localhost 1]# ls /proc/1
…
lrwxrwxrwx. 1 root root 0 May 10 14:16 cwd -> /
执行目录
-r——–. 1 root root 0 May 10 14:16 environ
环境变量
-rw——-. 1 root root 0 May 10 14:16 mem
内存使用情况
-r–r–r–. 1 root root 0 May 10 11:07 stat
进程状态
-r–r–r–. 1 root root 0 May 10 13:17 statm
内存状况信息
[root@localhost 1]# ls /proc/sys
crypto debug dev fs kernel net sunrpc vm
修改内核参数
Eg:
echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
主机就会不回复ping的包
uptime就是top的第一行
系统日志记录这系统运行中的记录信息
一般都存放在/var/log目录下面
/var/log/dmesg
核心启动日志
也可以用dmesg指令查看
/var/log/messages
系统报错日志
/var/log/maillog
邮件系统日志
/var/log/xferlog
FTP服务用日志
/var/log/secure
安全信息, 系统登录与网络连接的信息
/var/log/wtmp
登录记录, 二进制文件
last命令可以读这个文件
三十二
Who:
查询当前在线的用户
W指令也可以
Groups:
查询用户所属于的组
Id:
显示当前用户信息
Eg. Id root
Finger
查询用户信息
[root@localhost water]# finger root
Login: root
Name: root
Directory: /root
Shell: /bin/bash
Never logged in.
No mail.
No Plan.
whoami
查询当前用户是谁
添加用户
Useradd
Passwd
系统添加用户的标准步骤
编辑/etc/passwd与/etc/passwd
创建用户主目录
从/etc/skel拷贝文件与目录
让新用户获得七主目录与文件的权限
给新用户一个密码
更改用户的资料
Redhat-config-users, kusers
usermod指令
usermod -c “this is test1’s account” test1
//-c, comment, 全名
usermod -d /home/ttt test1
//更改主目录
三十三
usermod指令
usermod –e “2009-01-01” test1
//expire date, 密码什么时候到期
usermod –G root test1
//把用户添加到组里面
[root@localhost etc]# usermod -G root test1
[root@localhost etc]# id test1
uid=501(test1) gid=501(test1) groups=501(test1),0(root)
usermod -g
root test1
//gid更改
usermod -g 501 test1
usermod –s
//更改默认shell
usermod -s /bin/csh test1
usermod –u
//更改UID
usermod –u 502 test1
usermod –p
//修改passwd
usermod –p 1234 test1
usermod –L test1
//锁定test1的密码
然后就不能登录用test1了..
-U
//unlock
passwd -S test1
//查看是否锁定了.
三十四
Userdel指令删除一存在的用户
参数-r可以将用户的目录一并删除
/etc/passwd文件
记录的是用户登录信息
每一行代表一个用户, 用:分隔成7项, 即用户的基础登录信息
添加或删除一个用户, 最基础的操作, 即在passwd文件中添加或删除响应的个人记录.
每个用户有一个对应的号码,
UID
每一个群组有一个对应ID,
GID
每一个文件都有自己的拥有者和所属群组
/etc/passwd
water:x:500:500:water:/home/water:/bin/bash
500:
UID
Windows系统里面的UID/GID在regedit localmation->SAM
GID存放在 /etc/group
三十五
root:x:0:0:root:/root:/bin/bash
七个栏位:
login name
passwd
x, 是为了安全考虑, 放到/etc/shadow
uid
0, 表示是root用户, uid值1-99保留给系统使用
100-499保留给一些服务使用
>=500, 一般帐号
gid
full name
home directory
shell
三十六 Home Directory
/etc/login.defs
//useradd是后系统对home目录的设置文件
MAIL_DIR
/var/spool/mail
//邮箱目录
UID_MIN
500
UID_MAX
60000
//用户ID的范围
GID_MIN
500
GID_MAX
60000
//GID的范围
CREATE_HOME
yes
//创建一个用户, 会自动创建home目录
/etc/skel
//复制到用户home目录
/etc/shadow
//密码文件
Shadow文件支持密码过期设定等功能
Shadow文件中每一行表示一个系统用户的密码记录, 用:号分隔
用户可以通过authconfig来设定是否使用shadow文件以及md5加密
root:$6$oac.LDpXwlEGAo0k$UwWa6TAqfeGSNpeq0Fako4PSFN8IE10wu6xkjSz1P4AGLPMAbhjsbn7tvykUIS4YCUnqC2MpoKZD/9XY8Fcw8.:15103:0:99999:7:::
九个栏位
登录用名
用户密码, md5加密
从1970年1月1号起到密码上一次被更改的时间
密码再国几天可以被变更(0表示随时可以变更)
密码再国几天必须被变更(99999表示永不过期)
密码过期前几天系统提醒用户(默认为1周)
密码过期几条后帐号会被取消
从1970年1月1号算起, 多少填后帐号会失效
三十七
密码栏位是 以 (! 或者 *) 开头, 表示帐号被锁定, 不能登录linux系统
Authconfig 更改auth设置
组管理
/etc/group
Groupadd
增加
Groupdel
删除
Groupmod
修改组信息
Newgrp 改变当前组
三十八
/etc/group
组文件
用:隔开, 4个栏位
Group_name
组名
Password
组密码(一般不用)
x
群组密码放在gshadow
GID
组身份编号
0
root群组
>=100
一般群组
User_list
组成员列表
Gpasswd
设定群组密码, 组密码(一般不用)
/etc/gshadow
组密码文件
把一个用户加入一个群组里面
[root@localhost water]# groups jack
// 查询群组
jack : jack
[root@localhost water]# groupadd boboke
[root@localhost water]# gpasswd -a jack boboke//把一个用户加入一个群组里面
Adding user jack to group boboke
[root@localhost water]# groups jack
jack : jack boboke
初始群组, 在etc/passwd里面看到GID
如果一个用户的群组是这个用户的初始群组, 在/etc/group文件里面的群组成员栏位不会有这个用户
非初始群组
有效用户群组
用户创建的文件是属于该用户的初始群组
[water@localhost ~]$ groups
water boboke
[water@localhost ~]$ newgrp boboke
//更改有效用户群组
[water@localhost ~]$ groups
boboke water
useradd的高级用法
useradd -u 600 -g water -G boboke zl
//-u, UID, -g初始群组, -G加上的群组
useradd zl1 -s /bin/sh
//默认使用sh shell
useradd -M zl2
//不创建home目录
useradd zl3 –d /zl3
//-d , home 目录
useradd –r zl7
//创建系统用户账户, UID<500
groupadd –r xitongqunzu //创建系统群组
三十九
设备文件
块设备
b
需要缓存区
字符设备
c
一次传送一个字节, 不需要缓存区
/dev/hd[a-t]
IDE设备
/dev/sd[a-z]
SCSI设备
/dev/fd[0-7]
软驱
/dev/md[0-15]
软raid设备, 软件的磁盘设备
Loop[0-15]
本地回访设备, ping 127.0.0.1
Ram[0-19] 内存
四十
/dev/null
无限数据接收
/dev/zero
无限0资源
用来创建虚拟内存
/dev/tty[0-31]
虚拟终端
/dev/ttyS[0-9]
串口
/dev/lp[0-3]
并口
打印机
/dev/console
控制台
/dev/fb[0-31]
framebuffer
显卡设备
链接文件
/dev/cdrom
/dev/modem
/dev/pilot
使用
echo hello > /dev/tty2
cp /dev/fd0 /dev/fd1
dd if=/dev/had of=/root/mbr bs=512 count=1
备份第一个硬盘上的mbr为/root目录下面的mdr文件
Dd指令是一个强大的copy指令
支持copy过程中转换文件格式
参数
If=文件名
指定源文件
Of=文件名
指定目标文件
Bs=xxx
指定块大小
Count=n 指定复制块的数量
四十一
dd指令
dd if=/etc/passwd of=/root/passwd.backup
bs , count可以不加
dd < /root/install.log > /root/install.log.backup
<
表示if
>表示of
dd < install.log.backup > /root/install.log
还原
硬盘的第一扇区记录的硬盘的引导记录MBR和硬盘的分区表
每个扇区512字节
dd < /dev/sda > /root/mbr bs=512 count=1
mknod
建立设备文件
mknod 文件名 文件类型 主号 从号
主号/从号到这个文件查找 /usr/share/…/devices.txt
四十二
对于每个硬盘:
硬盘由扇区组成, 每个扇区为512字节
主引导记录/Master Boot Record
MBR
硬盘分区表/Standard Partition table
SPT
主分区
Primary Partition
扩展分区
extended partition
逻辑分区
logical partition
512个字节
446字节,
64字节,
2字节(扇区的结束标识符, 验证码55AA)
MBR
//如何引导内核, 可以把grub放到这里
SPT
//每个分区的记录, 每个分区的起始磁柱和结束磁柱
每个分区记录占用16个字节
一块硬盘只能有4个主分区
用户可以也值可以将一个主分区编程扩展分区
在扩展分区上, 用户可以日链表方式建立逻辑分区
逻辑分区的第一扇区里面也会记录自己的分区信息, 还会记录下一个逻辑分区的起始磁柱
Fdisk工具最多认识16个分区
Linux下面1-4保留给主分区使用的.
扩展分区自动从 hda5, hda6…
硬盘分区工具
Disk druid
只能安装时候使用, 图形化
Fdisk 引用广泛
四十三
Fdisk –l /dev/sda
Disk /dev/sda: 21.8 GB, 21832400896 bytes
255 heads, 63 sectors/track, 2654 cylinders, total 42641408 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 identifier: 0x000e9aec
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 42641407 20807680 8e Linux LVM
Boot
指定启动分区
Start/end
起始/结束 磁柱
Blocks
大小
ID
ID号码
83代表linux分区(system)
82代表linux swap(虚拟内存分区)
5
extended
Fdisk /dev/sda
…
Command(): m
//显示帮助信息
d
删除分区
会再要求输入分区号:
n
新建分区
要求p, e
P
选择开始磁柱
结束磁柱
+100M(选择大小就可以)
E
extended
选择开始磁柱
结束磁柱
按enter就是用默认值
在扩展分区上创建逻辑分区
p
打印分区表
跟fdisk –l一样
t
该ID号
q
退出不保存
w 保存修改并且退出
四十四
创建虚拟内存分区
现建立个分区
转化为swap 分区
t
选择number
6
l键可以list 分区号码
82
//linux swap
w//保存退出
格式化为swap文件格式
mkswap /dev/sda6
free查看
挂载到系统上
swapon /dev/sda6
free查看
取消挂载
swapoff /dev/sda6
另一种方法
dd < /dev/zero > /tmp/swap bs=4k count=25000
//100M大小
mkswap /tmp/swap
swapon /tmp/swap
四十五 文件系统
文件结构
文件存放的物理空间—-文件系统
FAT, FAT32, NTFS(带有日志功能)
ext2, ext3(多了日志功能)
ext2/ext3文件系统
支持rwx权限和文件属性
采用block+inode方式存放
block, 逻辑块, 最小的数据存储单位, 它一sector大小为基础
硬盘最小存储单元是扇区(sector), 每个扇区512byte
一般block大小为sector大小的2的n次方倍.
Eg, 一个block大小为4K, 读取10M文件, 不用每个sector每个sector去转换, 只要每个block每个block去转换, 减少磁头转换的次数, 提高效率
一个逻辑块最多容纳一个文件
四十六
在ext2/ext3中, 每个文件分两个部分存储, 文件属性+文件内容
inode, 索引节点, 存储文件属性
拥有指针的功能
有一个唯一的号码, 索引节点号, inode number
ls –i 查看inode number
包括这些属性: 拥有者, 所属群组, 权限, 类型, 建立更改的时间, 大小…
建立目录时候, 也会分配inode+block, linux中目录也是文件
目录文件的block中记录了目录下面的文件名和它们的inode直接的对应关系
文件系统的挂载点一定是目录, 而不是文件
文件系统所能存储的文件数目是与索引节点最大数目有关的.
一个索引节点大小128byte
Block大小支持1024byte, 2048, 4096, block最大4096…
操作系统如何读取一个文件
/etc/services
根据根目录的相关数据, 得到etc目录所在的索引节点
读取etc目录的属性(inode), 得到etc目录下面所有文件与它们inode的对应关系(block)
找到services文件的inode, 继而得到servers文件的属性和其block地址
四十七
Ext2/ext3文件系统上有一块空间被称为superblock, 用于存放文件系统的元数据, 如卷标名, block数, inode数目…
Superblock:
文件系统最开始boot sector, 启动分区, 存放引导程序, 如grub
引导程序可以放在MBR里面, 但有时候MBR要放其他东西, 这个时候可以放到boot sector里面
(具体以后再讲)
之后的第一个sector就叫做super sector, 记录文件系统的相关信息
dumpe2fs /dev/sda1
//在group以上的就是super sector信息
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: /boot
Filesystem UUID: bc01e921-0e2b-4a33-902a-3b6370d22202
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128016
Block count: 512000
Reserved block count: 25600
Free blocks: 466294
Free inodes: 127980
First block: 1
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2032
Inode blocks per group: 254
Flex block group size: 16
Filesystem created: Mon May 9 13:38:14 2011
Last mount time: Thu May 12 17:44:17 2011
Last write time: Thu May 12 17:44:17 2011
Mount count: 8
Maximum mount count: -1
Last checked: Mon May 9 13:38:14 2011
Check interval: 0 (<none>)
Lifetime writes: 43 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size:
128
Journal inode: 8
//日志
Default directory hash: half_md4
Directory Hash Seed: edf84c6a-869a-426c-b274-c5c3440616b9
Journal backup: inode blocks
Journal features: (none)
Journal size: 8M
Journal length: 8192
Journal sequence: 0x00000013
Journal start: 0
Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
Checksum 0xb6ac, unused inodes 2017
Primary superblock at 1, Group descriptors at 2-3
Reserved GDT blocks at 4-259
Block bitmap at 260 (+259), Inode bitmap at 276 (+275)
Inode table at 292-545 (+291)
3820 free blocks, 2017 free inodes, 2 directories, 2017 unused inodes
Free blocks: 4373-8192
Free inodes: 16-2032
Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
Checksum 0x333f, unused inodes 2032
Backup superblock at 8193(备份super sector), Group descriptors at 8194-8195
Reserved GDT blocks at 8196-8451
Block bitmap at 261, Inode bitmap at 277
Inode table at 546-799
519 free blocks, 2032 free inodes, 0 directories, 2032 unused inodes
Free blocks: 13818-14336
Free inodes: 2033-4064
…..
ReiserFS文件系统
轻松管理上白G的文件
先进的日志机制
高校的日志机制
独特的搜寻方式
Ext2/ext3中对每个文件, 提供额外属性支持
lsattr 检查文件属性
chattr 改变文件属性
A
档文件被修改时候, 其更改时间不会改变
a
只能对文件追加, 不能覆盖
//root用户才能用
d
备份时候不会备份它
i
永远不能被改变
//root用户才能用
j
文件的属性会被记录到ext3的日志中
S
…
Eg. chattr +i ttt.txt
chattr -i ttt
四十八
Ext3添加了日志功能ext2, 减少了系统崩溃后恢复文件系统花费的时间.
3种日志模式:
规则
默认, 仅记录元数据
日志化
讲数据象元数据一样记录入日志
写回
只在fsck(file system check)时发生
Ext2, 先写入缓冲区buffer, buffer满了, 写入硬盘
Ext3, 先写入缓冲区buffer, buffer满了, 通知日志(存放在硬盘的最后面), 我现在开始写文件了, 再开始写到硬盘空间, 写完后, 通知日志告诉已经写入成功.
Ext2
Valid bit
1
正常关机
关机时候文件系统是mount状态
会检查是否有损坏
Ext3
查找日志记录, 看看还有没有那些资料没有移动完成. 这样的检查时间块很多
Iso9660光盘使用的文件系统
ls /lib/modules/2.6.35.6-45.fc14.i686/kernel/fs/ 系统支持的文件系统
cat /proc/filesystems
//查看系统的文件系统
mkfs
创建各种文件系统, -t指定
mkfs –t ext2 /dev/sda5
dumpe2fs /dev/sda5
//查看super block信息
mke2fs
创建ext2/3文件系统, 支持指定block大小
mke2fs –b 2048 /dev/sda5 //default ext2
四十九
mke2fs –N 3000 /dev/sda5
//索引节点的个数
mke2fs –m 10 /dev/sda5
//保留10%空间给root用户, 默认是5%
mke2fs –L data /dev/sda5
//-L指定卷标名称
会写在super block 里面的
mke2fs –j /dev/sda5
//创建ext3文件系统
挂载文件系统
mount
mount –t 文件系统类型 设备名或者卷标 挂载点(必须是目录)
-t 文件系统类型
//可以不要, 内核可以自动识别类型
-o 补充追加的参数
Ext2 文件系统默认采用的参数:
Rw
读写
Suid
Dev
Exec
Auto
Nouser
Async
User
Ro
mount –o ro /dev/sda5 /opt 只读
Loop
挂载镜像文件
Remount
重新载入
mount /dev/cdrom /mnt 挂载光驱
mount –o loop,ro /var/boot.iso /mnt 挂载镜像
五十 /etc/fstab
配置文件系统挂载信息
系统启动会参考/etc/fstab中的配置项自动加载文件系统
Mount文件系统时候如果参数不全, 系统会从/etc/fstab中读取参数补全
也会被fsck, dump, quotaon, swapon等程序使用
# /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=bc01e921-0e2b-4a33-902a-3b6370d22202 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
总共有六项
设备文件, 或者卷标
LABLE=/
卷标为/ 的设备
挂载点
File system
Mount 参数
备份参数, dump参数
0:永远不备份; 1, 每天都备份; 2, 每两天备份一次;….
Fsck参数,
是否用fsck工具检测分区
0, 不检测; 1, 系统启动时候会第一个检测这个分区; 2, 第二个检测这个分区
用户可以通过查看/etc/mtab文件查看当前挂载中的文件系统(mount指令也可以, /proc/mounts)
卷标
记录在super block中
e2label
查询与更改ext2文件系统卷标
e2label /dev/sda1 data 创建卷标
五十一
mount –L data /opt
用卷标名称来挂载
umount
/dev/sda5
设备名
/opt
挂载点
文件系统维护
fcsk
检查和修复文件系统
note: 被检查的分区不要挂载到文件系统上面(处于卸载状态), 因为有可能损坏文件
fsck –y /dev/sda6
//-y, 如果检查到有问题, 自动修复
tune2fs
更改ext2文件系统属性
tune2fs –j /dev/sda5
//转换ext2到ext3
跟mke2fs相比, 内容/数据不会变化
自动挂载
系统通过autofs服务自动挂载文件系统
-需要后台的automount 进程
-autofs服务的开闭由
/etc/init.d/autofs脚本控制
rpm –q autofs
//查看是否安装这个包
配置文件:
/etc/auto.master
/mnt(自动挂载目录集合)
/etc/auto.misc(参考文件)
–timeout=60(时间, 过60秒不使用, 则umount掉)
/etc/auto.misc
cdrom
-fstype=iso9660
:/dev/cdrom(:表示本地)
service autofs restart
真正挂载目录, 为/mnt/cdrom
五十二 RHEL AS 4.0 安装
五十三
Linux 安装来源
CD/DVD Rom
FTP
NFS
HTTP
硬盘
五十四
五十五
五十六
五十七
五十八 计划任务
at 命令: 指定一个时间执行一个任务
这个任务只能运行一次
atq:查询当前等待的任务
atrm:删除等待任务
batch:以一个低优先级延时执行任务
atd进程存在是前提
ps –ef | grep atd
/etc/init.d/atd restart
//手动运行atd进程
chkconfig –level 2345 atd on
//设置atd随机器自动启动
at now +1 min //按下enter
at 00:55
at 1:00 2011-11-11
at> echo “hello” > /dev/tty2
at> 按下ctrl+D
五十九
用at命令创建任务, 会被分配job 号码
在/var/spool/at目录中排队
atq:查询当前等待的任务
atrm:删除等待任务
atrm 17(工作号)
六十
batch:以一个低优先级延时执行任务
at命令的使用控制文件
/etc/at.allow
//如果没有这两个文件, 只有root用户有权限
/etc/at.deny
六十一
cron机制:根据一个时间表自动执行任务
anacron机制: 在一个指定时间间隔错过后自动执行任务
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37977.html