一.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机制: 在一个指定时间间隔错过后自动执行任务

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

  1. .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(上)

    05 | 依赖注入:良好架构的起点 为什么要使用依赖注入框架 借助依赖注入框架,我们可以轻松管理类之间的依赖,帮助我们在构建应用时遵循设计原则,确保代码的可维护性和可扩展性 ASP.NET Core ...

  2. .NET Core开发实战(第35课:MediatR:让领域事件处理更加优雅)--学习笔记

    35 | MediatR:让领域事件处理更加优雅 核心对象 IMediator INotification INotificationHandler 这两个与之前的 Request 的行为是不一样的, ...

  3. .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)

    05 | 依赖注入:良好架构的起点 注册完毕之后,想替换某些组件的某些部分时,可以使用 Replace 和 RemoveAll services.AddSingleton<IOrderServi ...

  4. 组播基本概念、IGMP、IGMP监听学习笔记

    前言 一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作.这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识.组播占了计算机网络的一大部分,特别 ...

  5. 学习python,北京尚学堂,第61课到第90课的个人的总结

    61课continue 用于结束本次循环,进入下一次. 62else语句 while语句和for语句自带一个else语句 如果循环没有被break终结,则则执行else 63循环代码优化 其他连接字符 ...

  6. 终于20年后真正听完了Beyond的《大地》

    今天终于真正认真听完了一遍Beyond的<大地>,好多歌名都不知道,熟悉的曲子不知道歌词,熟悉的曲调不知道歌名,今天终于对上了号.这已经是将近二十年后了.同时记念曾经的那个二十年前的&qu ...

  7. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  8. 学习笔记_曲根词汇_词根词缀_联想记忆_第61_71_74节课

    第74课 学习笔记 xenophobia -phobia后缀,  恐高  acrophobia   恐水  Hydrophobia xeno === foreign xenophile phile后缀 ...

  9. 读《周志明的软件架构课》--学习笔记和感想随笔

    主要记录对周老师的<周志明的软件架构课>的学习笔记,本篇章是对课程不可变基础设施部分的学习,从虚拟化的技术理解容器技术的产生和发展,从部署运维角度理解应用的封装,从网络虚拟化理解容器网络, ...

  10. 第71课:Spark SQL窗口函数解密与实战学习笔记

    第71课:Spark SQL窗口函数解密与实战学习笔记 本期内容: 1 SparkSQL窗口函数解析 2 SparkSQL窗口函数实战 窗口函数是Spark内置函数中最有价值的函数,因为很多关于分组的 ...

最新文章

  1. C#Winform+WindowsAPI做个剪贴板无缝自动保存器(视频截图利器)
  2. Spark入门教程(二)Spark2.2源码编译及安装配置
  3. python中turtle画圆填充颜色_用Python中的画图工具turtle绘制八卦图
  4. node 进阶 | 通过node中如何捕获异常阐述express的特点
  5. 如何datagrid分页保持每页先前选择的checkbox的状态?
  6. 【Python】from __future__ import absolute_import的作用
  7. 汽车电子专业知识篇(十五)-整车电气系统设计——高压系统集成方案
  8. abap 优化之ST05
  9. Win32API 数据基本类型
  10. 突然!iPhone 12/12 Pro从苹果天猫旗舰店下架,不愿参加双11活动?
  11. php mysql bbs_BBS(php mysql)完整版(六)
  12. MAGENTO DEBUG
  13. 同余运算及其基本性质(证明)
  14. kali 32位 更换 xfce4 桌面
  15. 网络协议 21 - RPC 协议(中)- 基于 JSON 的 RESTful 接口协议
  16. windowsxp安装python什么版本合适_XP系统安装Python,python
  17. Windows DLL 注入技术
  18. lwip---(六)ARP表
  19. dell计算机维修教程,戴尔Dell Latitude E6410/E6510官方拆机图解维修手册
  20. python pickle文件大小_无法在Python中加载以前转储的大尺寸pickle文件

热门文章

  1. TXT文本文件中批量替代回车符号
  2. GIS学习第一课:USGS遥感数据下载
  3. imx6q LINUX 启动时间优化
  4. Linux下安装AliSQL(MySQL)及相关环境配置
  5. vs2015(激活密钥)
  6. ps html插件初始化失败,解决PSCC2019无法安装扩展插件怎么办?
  7. 标定工具CANape软件使用之新建工程
  8. 微软影子系统EWF软件用法及参数描述
  9. python pdf模块_python—pdf模块
  10. wsdl2java教程_[Java教程]apache CXF wsdl2java工具的使用