听完了61课的IT播吧,这是我整理的学习笔记。

听完了61课的IT播吧,这是我整理的学习笔记。一.Linux用户环境1.[root@test~]#root用户@主机名path #//root, //$normal2.useraddjack //添加用户passwdjack //激活用户,更改密码帮助 mknodhelpman /usr/

一.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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注