Linux自己的文件数据: /usr/share/doc (在你的Linux系统中)
tab 补全命令,提示
ctrl+c 结束指令
ctrl+d exit
shift+PageUP down翻页
--help 指令语法
man page DATE( 1 )里面的数字即
1 使用者在shell环境中可以操作的指令或可可执行文件
2 系统核心可调用的函数与工具等
3 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc)
4 设备文件的说明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 游戏(games)
7 惯例与协定等,例如Linux文件系统、网络协定、ASCII code等等的说明
8 系统管理员可用的管理指令
9 跟kernel有关的文件
/string 向“下”搜寻string
?string 向“上”搜寻 string 这个字串
可以 n 继续往下查询,用 N 往上查询
将数据同步写入硬盘中的指令: sync
惯用的关机指令: shutdown
重新开机,关机: reboot, halt, poweroff
切换各个不同的终端机接口6个,默认第一个Xwin
切换的方式为 Crtl + Alt + [F1]~[F6]
Linux是 多用户 多任务 的系统
文件可存取的身份分别是 owner/group/others三种身份各有 read/write/execute
/etc/passwd 帐号与一般身份使用者相关信息
/etc/shadow 个人的密码
/etc/group 群 组名称
ls -al 列出所有的文件详细的权限与属性(包含隐藏文件)
第一个字符代表这个文件是“目录、文件或链接文件等等”:
当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;正规文件(regular file )
纯文本文件(ASCII) cat name
二进制档(binary)cat本身就是
数据格式文件(data)程序运行产生的特定格式的文件
当为[ d ]则是目录,例如上表文件名为“.config”的那一行;
若是[ l ]则表示为链接文件(link file); 类似Windows系统下面的捷径
/dev
若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);/dev/sda看看
若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备
第一个属性为 [ s ] 数据接口文件(sockets) 最常在/run或/tmp目录中看到
数据输送档(FIFO, pipe) [ p ] 主要的目的在解决多个程序同时存取一个文件所造成的错误问题
*.sh : 脚本或批处理文件 (scripts)
Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件
.html, .php:网页相关文件
1 + 3+ 3+ 3
“rwx” “rwx” “rwx”
个人 群组 其他人 为 --- 表示没有权限
[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)
不含删除该文件 可以被系统执行的权限
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
权限 节点 文件拥有者 拥有者所在群组 文件大小 。。。。。
||
表示有多少文件名链接到此节点
文件拥有者test1[rwx]可以在本目录中进行任何工作
而testgroup这个群组r-x的帐号,例如test2,test3亦可以进入本目录进行工作,但是不能
在本目录下进行写入的动作;
至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进
入此目录
chgrp :改变文件所属群组 chgrp [-R] dirname/filename ...
chown :改变文件拥有者 chown [-R] 帐号名称 文件或目录
chown [-R] 帐号名称:群组名称 文件或目录
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
[4+2+1][4+0+1]
> r:4 > w:2 > x:1 改变权限为 -rwxr-xr-- chmod 754 test.sh
也可以: chmod u=rwx,g=rx,o=r filename
-rwxr-xr-x chmod u=rwx,go=rx .bashrc
chmod a+w .bashrc 所有人加上写权限
Linux文件长度限制:单一文件或目录的最大容许文件名为 255Bytes 英文255个 中文 128
/home/dmtsai 回到当前用户的主文件夹
cd:变换目录 cd ~dmtsai cd ~ cd - 前一个工作目录
change dictionary
pwd 显示目前的目录 pwd -P 显示链接文件的真实路径
print working directory
mkdir 创建一个新的目录
mkdir -p 1/2/3 创建多层目录 没有-p会创建失败,提示前一级目录不存在
mkdir -m 711 test 指定文件的权限
rmdir 删除一个空的目录 rm -rf dirname
echo $PATH //环境变量 PATH 用冒号(:)来隔开
PATH="${PATH}:/root" //添加环境变量
ls -a 全部的文件,连同隐藏文件( 开头为 . 的文件)一起列出来
-l 长数据串行出,包含文件的属性与权限等等数据;
-d :仅列出目录本身,而不是列出目录内的文件数据
cp [options] source1 source2 source3 .... directory
源文件有两个以上,则最后一个目的文件一定要是“目录”才行
-a :相当于 -dr --preserve=all 的意思,除了权限相关参数外,还加入 SELinux 的属性,
links,xattr 等也复制了;(常用)
-i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-r :递回持续复制,用于目录的复制行为;(常用)
-p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用);
-d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身;
cp 链接文件 目标 会复制链接文件指向的文件,若需要复制链接文件则用-d
-f :为强制(force)的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-l :进行硬式链接(hard link)的链接文件创建,而非复制文件本身; !!!!实体链接
-s :复制成为符号链接文件 (symbolic link),亦即“捷径”文件;
-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。
( update )
rm [-fir] 文件或目录
-f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
rm ./-aaa- 或 rm -- -aaa- 删除 - 开头的文件 如: -**
指令前加上反斜线,可以忽略掉 alias 的指定选项
mv [options] source1 source2 source3 .... directory
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新 (update)
basename /etc/sysconfig/network network
dirname /etc/sysconfig/network /etc/sysconfig
文件内容查阅
cat (concatenate)由第一行开始显示文件内容 断行字符以 $
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;[tab]会以 ^I
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
空白键 (space):代表向下翻一页;
Enter :代表向下翻“一行”;
:f :立刻显示出文件名以及目前显示的行数;
/字串 :代表在这个显示的内容当中,向下搜寻“字串”这个关键字;
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻“字串”的功能;
?字串 :向上搜寻“字串”的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
g :前进到这个数据的第一行去;
G :前进到这个数据的最后一行去 (注意大小写);
q :离开 less 这个程序;
head 只看头几行
head -n 20 /etc/man_db.conf
后面100行的数据都不打印
head -n -100 /etc/man_db.conf
tail 只看尾巴几行
100行以后
tail -n +100 /etc/man_db.conf
前 20 行,再取后十行
head -n 20 /etc/man_db.conf | tail -n 10
od 以二进制的方式读取文件内容!
od [-t TYPE] 文件
a :利用默认的字符来输出;
c :使用 ASCII 字符来输出
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size Bytes ;
f[size] :利用浮点数值(floating)来输出数据,每个数占用 size Bytes ;
o[size] :利用八进位(octal)来输出数据,每个整数占用 size Bytes ;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size Bytes ;
将/etc/issue这个文件的内容以8进位列出储存值与ASCII的对照表
od -t oCc /etc/issue
touch
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不创建新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
文件被创建的
创建一个空的文件; status time (ctime)状态status)改变时权限与属性
将某个文件日期修订为目前 (mtime 与 atime) modification time access time
内容改变
touch 文件名 三个时间 (atime/ctime/mtime) 都会更新为目前的时间
touch -d "2 days ago" bashrc 将日期调整为两天前
文件默认权限:umask 0022 被去掉的权限 r4w2x1
(-----w--w-)
(d----w--w-)
“文件”则默认“没有可执行( x )权限” 默认权限如下: -rw-rw-rw- 666
创建为“目录” drwxrwxrwx 777
创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
设置 umask : umask 002
文件隐藏属性
chattr(设置文件隐藏属性) chattr [+-=][ASacdistu] 文件或目录名称
+ :增加某一个特殊参数,其他原本存在参数则不动。
- :移除某一个特殊参数,其他原本存在参数则不动。
= :设置一定,且仅有后面接的参数
i :这个 i 可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!”
对于系统安全性有相当大的助益!只有 root 能设置此属性
a :当设置 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设置这属性
A :当设置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime 将不会被修改,
可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
S :一般文件是非同步写入磁盘的(原理请参考[前一章sync](../Text/index.html#sync)的说明),如果加上 S 这个属性时,
当你进行任何文件的修改,该更动会“同步”写入磁盘中。
c :这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩,
但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
d :当 dump 程序被执行的时候,设置 d 属性将可使该文件(或目录)不会被 dump 备份
s :当文件设置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,
所以如果误删了,完全无法救回来了喔!
u :与 s 相反的,当使用 u 来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,
可以使用来救援该文件喔!
注意1:属性设置常见的是 a 与 i 的设置值,而且很多设置值必须要身为 root 才能设置
lsattr (显示文件隐藏属性) lsattr [-adR] 文件或目录
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来!
文件特殊权限: (SUID, SGID, )SBIT
(rws 此处的s即为特殊权限 ) rwt
SUID 这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还 是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上 也是无效的。
SGID 用户在此目录下具有w权限的话,若使用者在此目录下建立新文件,则新文件的群组与此目录的群组相同
SBIT 任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与
root能够删除自己的目录或文件。
4 为 SUID u+s
2 为 SGID g+s
1 为 SBIT o+t
chmod 4755 filename
chmod g+s,o+t test
观察文件类型 file ~/.bashrc
指令文件名的搜寻
which [-a] command
-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的指令名称
which ifconfig 搜寻 ifconfig 这个指令的完整文件名
文件文件名的搜寻 主要是针对 /bin /sbin 下面的可执行文件
whereis [-bmsu] 文件或目录名
-l :可以列出 whereis 会去查询的几个主要目录而已
-b :只找 binary 格式的文件
-m :只找在说明文档 manual 路径下的文件
-s :只找 source 来源文件
-u :搜寻不在上述三个项目当中的其他特殊文件
whereis ifconfig 请找出 ifconfig 这个文件名
locate [-ir] keyword 数据库来搜寻,每天执行一次,当天修改的当天搜索不到
-i :忽略大小写的差异;
-c :不输出文件名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正则表达式的显示方式
locate -l 5 passwd 找出系统中所有与 passwd 相关的文件名,且只列出 5 个
updatedb 更新数据库 /etc/updatedb.conf 设置去搜寻系统硬盘内的文件名并
更新/var/lib/mlocate 内的数据库文件
locate 依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名
find [PATH] [option] [action]
/
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
find / -mtime 0 24 小时内有更动过内容 (mtime) 的文件列出
find /etc -newer /etc/passwd /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件!
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
find /home -user dmtsai 搜寻 /home 下面属于 dmtsai 的文件
find / -nouser 搜寻系统中不属于任何人的文件
-name filename:搜寻文件名称为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
还要大的文件,就是“ -size +50k ”
-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 设备文件 (b, c),
目录 (d), 链接文件 (l), socket (s), 及 FIFO (p) 等属性。
-perm mode :权限正好一样
-perm -mode :权限为当前权限的文件或者比当前输入的要高的文件
-perm /mode :搜寻文件权限“包含任一 mode 的权限”的文件,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------
也会被列出来,因为他有 -rw.... 的属性存在!
find / -name passwd 找出文件名为 passwd 这个文件
find / -name "*passwd*" 文件名包含了 passwd 这个关键字的文件
find /run -type s 找出 /run 目录下,文件类型为 Socket 的文件名有哪些
find / -perm /7000 搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性
find /etc -size +50k -a -size -60k -exec ls -l {} \; 大小介于 50K 到 60K 之间的文件
-a 是 and
可去掉
find /etc -size +50k -a ! -user root (-type f ) -exec ls -ld {} \;
文件大小大于 50K 且文件所属人不是 root 的文件名
!代表不是后面的项目
find /etc -size +1500k -o -size 0 /etc下容量大于 1500K 以及容量等于 0 的文件
-o是或的意思
-exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。
find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \ 将上个范例找到的文件使用 ls -l 列出来~
{} 代表的是“由 find 找到的内容”,如上图所示,find 的结果会被放置到 {} 位置中;
记录文件属性
EXT2(inode)文件系统 多区块群组(一个BOOTSECTOR+多个Block Group)
Block Group = superBlock+文件系统描述+区块对应表+inode对应表+iNodeTable+DataBlock
superBlock:记录此 filesystem 的整体信息inode/block的大小,总量、使用量、剩余量,以及文件
系统的格式与相关信息等,一个 valid bit 数值 0已被挂载 1没有挂载。
inode:记录文件的属性,容量 ,一个文件占用一个inode,数据所在的 block号码
系统能够创建的文件数量与 inode 的数量有关。
block:实际记录文件的内容,若文件太大时,会占用多个 block
block bitmap:记录block使用情况,哪些为空,非空
inode bitmap 记录iNode使用情况,哪些为空,非空
将 inode table 与 data block 称为数据存放区域
其他例如 superblock、block bitmap 与 inode bitmap 等区段就被称为 metadata (中介数据)
dumpe2fs 查询 Ext 家族 superblock 信息的指令
数据的不一致Inconsistent状态 更新后metadata 不对应 实际数据存放区 (停电中断等)
日志式文件系统 (Journaling filesystem):为了避免上述提到的文件系统不一致的情况发生
非同步处理(asynchronously):修改内存数据以后将数据标记为Dirty,每隔一段时间将Dirty的数据写入硬盘
PS:使用 sync 来强迫内存中设置为 Dirty 的文件回写到磁盘中
Linux VFS (Virtual Filesystem Switch):自动选择读取文件系统类型等方式进行读取
舍弃对 Linux 支持度最完整的 EXT 家族而改用 XFS 呢? 文件格式化慢
xfs文件系统=(data section)+一个文件系统活动登录区 (log section)以及一个实时运行区 (realtime section)
数据区:包括inode/data block/superblock等 多个储存区群组
xfs 的 block 与 inode 有多种不同的容量可供设置,block 容量可由 512Bytes ~ 64K 调配
由于内存控制的关系 (分页档pagesize 的容量之故) 最高可以使用block 大小为 4K,多了不给挂载
inode 容量可由 256Bytes 到 2M 默认够用
文件系统活动登录区:纪录文件系统的变化 可以指定外部的磁盘来作为日志区
实时运行区:文件要被创建时找一个到数个的 extent 区块 等到分配完毕后再写入到 data section
的 inode 与 block 去 磁盘阵列 extent 设置为与 stripe 一样大
xfs_info /路径 sunit 与 swidth 与磁盘阵列的 stripe
查询 superblock 信息
df [-ahikHTm] [目录或文件名] 列出文件系统的整体磁盘使用量
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i :不用磁盘容量,而以 inode 的数量来显示
df 显示全部
df -Th 将容量结果以易读的容量格式显示出来
proc 文件系统挂载在内存(实体内存一半)
du [-ahskm] 文件或目录名称 评估文件系统的磁盘使用量(文件大小)
-a :列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
符号链接 Symbolic link 捷径功能 源文件被删除之后,symbolic link 的文件会“开不了”
指向文件目录的数据文件的这一项,而不是数据对inode
Symbolic link 所创建的文件为一个独立的新的文件
实体链接 (hard link) 通过文件系统的 inode 链接来产生新文件名,删除其中之一对数据没影响修改会修改数据
hard link 只是在某个目录下新增一笔文件名链接到某 inode 号码的关连记录而已
不能跨 Filesystem 不能 link 目录
ln [-sf] 来源文件 目标文件
-s :如果不加任何参数就进行链接,那就是hard link,至于 -s 就是symbolic link
-f :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建!
lsblk [-dfimpt] [device] list block device 列出系统上的所有磁盘列表
-d :仅列出磁盘本身,并不会列出该磁盘的分区数据
-f :同时列出该磁盘内的文件系统名称
-i :使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)
-m :同时输出该设备在 /dev 下面的权限数据 (rwx 的数据)
-p :列出该设备的完整文件名!而不是仅列出最后的名字而已。
-t :列出该磁盘设备的详细数据,包括磁盘伫列机制、预读写的数据量大小等
blkid 列出设备的 UUID 等参数
xfs_admin 列出设备的 UUID 等参数
parted 列出磁盘的分区表类型与分区信息
parted device_name print 列出/dev/sda3磁盘的相关数据
parted /dev/sda3 print
gdisk/fdisk GPT/MBR gdisk 设备名称
partprobe -s 更新 Linux 核心的分区表信息
mkfs.xfs [-b bsize] [-d parms] [-i parms] [-l parms] [-L label] [-f] \ [-r parms] 设备名称
-b :后面接的是 block 容量,可由 512 到 64k,不过最大容量限制为 Linux 的 4k 喔!
-d :后面接的是重要的 data section 的相关参数值,主要的值有:
agcount=数值 :设置需要几个储存群组的意思(AG),通常与 CPU 有关
agsize=数值 :每个 AG 设置为多少容量的意思,通常 agcount/agsize 只选一个设置即可
file :指的是“格式化的设备是个文件而不是个设备”的意思!(例如虚拟磁盘)
size=数值 :data section 的容量,亦即你可以不将全部的设备容量用完的意思
su=数值 :当有 RAID 时,那个 stripe 数值的意思,与下面的 sw 搭配使用
sw=数值 :当有 RAID 时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)
sunit=数值 :与 su 相当,不过单位使用的是“几个 sector(512Bytes大小)”的意思
swidth=数值 :就是 su*sw 的数值,但是以“几个 sector(512Bytes大小)”来设置
-f :如果设备内已经有文件系统,则需要使用这个 -f 来强制格式化才行!
-i :与 inode 有较相关的设置,主要的设置值有:
size=数值 :最小是 256Bytes 最大是 2k,一般保留 256 就足够使用了!
internal=[0|1]:log 设备是否为内置?默认为 1 内置,如果要用外部设备,使用下面设置
logdev=device :log 设备为后面接的那个设备上头的意思,需设置 internal=0 才可!
size=数值 :指定这块登录区的容量,通常最小得要有 512 个 block,大约 2M 以上才行!
-L :后面接这个文件系统的标头名称 Label name 的意思!
-r :指定 realtime section 的相关设置值,常见的有:
extsize=数值 :就是那个重要的 extent 数值,一般不须设置,但有 RAID 时,
最好设置与 swidth 的数值相同较佳!最小为 4K 最大为 1G 。
mkfs.xfs -f -d agcount=2,sunit=512,swidth=3584 -r extsize=1792k /dev/vda4
mkfs.ext4 [-b size] [-L label] 设备名称
-b :设置 block 的大小,有 1K, 2K, 4K 的容量,
-L :后面接这个设备的标头名称。
文件系统检验 被检查的 partition 务必不可挂载到系统上
xfs_repair [-fnd] 设备名称
-f :后面的设备其实是个文件而不是实体设备
-n :单纯检查并不修改文件系统的任何数据 (检查而已)
-d :通常用在单人维护模式下面,针对根目录 (/) 进行检查与修复的动作!很危险!
不要随便使用
fsck.ext4 [-pf] [-b superblock] 设备名称
-p :当文件系统在修复时,若有需要回复 y 的动作时,自动回复 y 来继续进行修复动作。
-f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入
细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰!
-D :针对文件系统下的目录进行最优化配置。
-b :后面接 superblock 的位置!一般来说这个选项用不到。但是如果你的 superblock
因故损毁时,通过这个参数即可利用文件系统内备份的 superblock 来尝试救援。一般来说
,superblock 备份在:1K block 放在 8193, 2K block 放在 16384, 4K block 放在 32768
fsck.ext4 -b 32768 /dev/vda5 找出刚刚创建的 /dev/vda5 的另一块 superblock,并据以检测系统
文件系统挂载与卸载
单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
单一目录不应该重复挂载多个文件系统;
要作为挂载点的目录,理论上应该都是空目录才是
mount [-l] 显示目前挂载的信息
mount [-t 文件系统] LABEL='' 挂载点
mount [-t 文件系统] UUID='' 挂载点
mount [-t 文件系统] 设备文件名 挂载点
-a :依照配置文件 [/etc/fstab](../Text/index.html#fstab) 的数据将所有未挂载的磁盘都挂载上来
-l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!
-t :可以加上文件系统种类来指定欲挂载的类型。常见的 Linux 支持类型有:xfs, ext3, ext4,
reiserfs, vfat, iso9660(光盘格式), nfs, cifs, smbfs (后三种为网络文件系统类型)
-n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序的运行。
但在某些情况下(例如单人维护模式)为了避免问题会刻意不写入。此时就得要使用 -n 选项。
-o :后面可以接一些挂载时额外加上的参数!比方说帐号、密码、读写权限等:
async, sync: 此文件系统是否使用同步写入 (sync) 或非同步 (async) 的
内存机制,请参考[文件系统运行方式](../Text/index.html#harddisk-filerun)。默认为 async。
atime,noatime: 是否修订文件的读取时间(atime)。为了性能,某些时刻可使用 noatime
ro, rw: 挂载文件系统成为只读(ro) 或可读写(rw)
auto, noauto: 允许此 filesystem 被以 mount -a 自动挂载(auto)
dev, nodev: 是否允许此 filesystem 上,可创建设备文件? dev 为可允许
suid, nosuid: 是否允许此 filesystem 含有 suid/sgid 的文件格式?
exec, noexec: 是否允许此 filesystem 上拥有可执行 binary 文件?
user, nouser: 是否允许此 filesystem 让任何使用者执行 mount ?一般来说,
mount 仅有 root 可以进行,但下达 user 参数,则可让
一般 user 也能够对此 partition 进行 mount 。
defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
remount: 重新挂载,这在系统出错,或重新更新参数时,很有用!
umount [-fn] 设备文件名或挂载点
-f :强制卸载!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-l :立刻卸载文件系统,比 -f 还强!
-n :不更新 /etc/mtab 情况下卸载
mknod 设备文件名 [bcp] [Major] [Minor]
b :设置设备名称成为一个周边储存设备文件,例如磁盘等;
c :设置设备名称成为一个周边输入设备文件,例如鼠标/键盘等;
p :设置设备名称成为一个 FIFO 文件;
Major :主要设备代码;
Minor :次要设备代码;
修改 ext4 的 label name 与 UUID
tune2fs [-l] [-L Label] [-U uuid] 设备文件名
-l :类似 dumpe2fs -h 的功能~将 superblock 内的数据读出来~
-L :修改 LABEL name
-U :修改 UUID 啰!
dumpe2fs -h /dev/vda5
tune2fs -L vbird_ext4 /dev/vda5
dd if=/dev/zero of=/srv/loopdev bs=1M count=512 创建文件
mkfs.xfs -f /srv/loopdev 格式化
parted [设备] [指令 [参数]]
新增分区:mkpart
显示分区:print
删除分区:rm [partition]
parted /dev/vda print 以 parted 列出目前本机的分区表数据
// parted /dev/vda unit mb print 固定显示列表大小的单位
parted /dev/sda mklabel gpt MBR 分区表变成 GPT 分区表
parted /dev/vda mkpart primary fat32 36.0GB 36.5GB 创建一个 512MB 的分区来格式化为 vfat
起始位置 结束位置
*.zip zip 程序压缩的文件;
*.gz gzip 程序压缩的文件;
*.bz2 bzip2 程序压缩的文件;
*.xz xz 程序压缩的文件;
gzip [-cdtv#] 文件名 zcat/zmore/zless读取压缩文件的文本内容
-c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
更好的压缩比
bzip2 [-cdkzv#] 文件名 bzcat 文件名.bz2 读取压缩文件的文本内容
-c :将压缩的过程产生的数据输出到屏幕上!
-d :解压缩的参数
-k :保留原始文件,而不会删除原始的文件喔!
-z :压缩的参数 (默认值,可以不加)
-v :可以显示出原文件/压缩文件的压缩比等信息;
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!
bzip2 -v /tmp/services /tmp/services 以 bzip2 压缩
bzip2 -d services.bz2 解压
xz [-dtlkc#] 文件名 xcat 文件名.xz
-d :就是解压缩啊!
-t :测试压缩文件的完整性,看有没有错误
-l :列出压缩文件的相关信息
-k :保留原本的文件不删除~
-c :同样的,就是将数据由屏幕上输出的意思!
-# :同样的,也有较佳的压缩比的意思!
打包指令: tar
XFS 文件系统备份
xfsdump [-L S_label] [-M M_label] [-l #] [-f 备份文件] 待备份数据
-L :xfsdump 会纪录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明
-M :xfsdump 可以纪录储存媒体的标头,这里可以填写此媒体的简易说明
-l :是 L 的小写,就是指定等级~有 0~9 共 10 个等级喔! (默认为 0,即完整备份)
-f :有点类似 tar 啦!后面接产生的文件,亦可接例如 /dev/st0 设备文件名或其他一般文件文件名等
-I :从 /var/lib/xfsdump/inventory 列出目前备份的信息状态
用 xfsdump 进行累积备份 (Incremental backups)
一定得要进行过完整备份后 (-l 0) 才能够继续有其他累积备份
xfsrestore -I <==用来察看备份文件数据
xfsrestore [-f 备份文件] [-L S_label] [-s] 待复原目录 <==单一文件全系统复原
xfsrestore [-f 备份文件] -r 待复原目录 <==通过累积备份文件来复原系统
xfsrestore [-f 备份文件] -i 待复原目录 <==进入互动模式
-I :跟 xfsdump 相同的输出!可查询备份数据,包括 Label 名称与备份时间等
-f :后面接的就是备份文件!企业界很有可能会接 /dev/st0 等磁带机!我们这里接文件名!
-L :就是 Session 的 Label name 喔!可用 -I 查询到的数据,在这个选项后输入!
-s :需要接某特定目录,亦即仅复原某一个文件或目录之意!
-r :如果是用文件来储存备份数据,那这个就不需要使用。如果是一个磁带内有多个文件,
需要这东西来达成累积复原
-i :进入互动模式,进阶管理员使用的!一般我们不太需要操作它!
S_label session label 是“boot_all”啰
xfsrestore -f /srv/boot.dump -L boot_all /boot
mkisofs 创建镜像文件
vi
一般指令模式 (command mode) 默认的模式
5↑ 向上5行 ctrl+f/b翻页 ctrl+d/u翻半页 Hmoe/End 本行第一/最后
G 移动到这个文件的最后一列(常用)
x 为向后删除一个字符 X 为向前删除一个字符 nx后删除 n 个字符
dd 删除光标所在的那一整列(常用) ndd
d1G 删除光标所在到第一列的所有数据 dG删除光标所在到最后一列的所有数据
d$ 删除光标所在处,到该列的最后一个字符 d0 到最前
yy 复制光标所在的那一列(常用) nyy
y1G yG
y0 y$ 复制光标所在的那个字符到该列行首 尾
p, P 光标下一列贴上 光标上一列 粘贴
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)
. 重复前一个动作
编辑模式 (insert mode) “i, I, o, O, a, A, r, R”等任何一个进入编辑模式
命令行命令模式 (command-line mode) “ : / ? ”三个中的任何一个
100,200s/vbird/VBIRD/g 100 到 200 列之间搜寻vbird,用VBIRD替换
1,$s/word1/word2/g 从第一列到最后一列寻找 word1 字串 word2替换
gc 给个确认提示
:w [filename] 储存成另一个文件 n1,n2 w [filename] 将 n1 到 n2 储存成 filename 这个文件。
:r [filename] 读入另一个文件的数据
! command 暂时离开 vi 到命令行界面下执行 command 的显示结果
set nu显示行号,设置之后,会在每一列的字首显示该列的行号 set nonu
:wq 退出编译器
:wq! 强制写入
vim 会主动的创建 /tmp/vitest/.man_db.conf.swp 的暂存盘
多文件编辑
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 的打开的所有文件
:sp[filename] 窗口分区 [ctrl]+w+↑”及“[ctrl]+w+↓” 两个窗口之间移动
自动补齐
[ctrl]+x -> [ctrl]+n 通过目前正在编辑的这个“文件的内容文字”作为关键字,予以补齐
[ctrl]+x -> [ctrl]+f 以当前目录内的“文件名”作为关键字,予以补齐
[ctrl]+x -> [ctrl]+o 以扩展名作为语法补充,以 vim 内置的关键字,予以补齐
type [-tpa] name
:不加任何选项与参数时,type 会显示出 name 是外部指令还是 bash 内置指令
-t :当加入 -t 参数时,type 会将 name 以下面这些字眼显示出他的意义:
file :表示为外部指令;
alias :表示该指令为命令别名所设置的名称;
builtin :表示该指令为 bash 内置的指令功能;
-p :如果后面接的 name 为外部指令时,才会显示完整文件名;
-a :会由 PATH 变量定义的路径中,将所有含 name 的指令都列出来,包含 alias
定义 name=“string” 变量类型默认为“字串”
变量的取用:echo $variable
双引号内的特殊字符如 $ eg:var="lang is$LANG" lang is zh_TW.UTF-8
var='lang is $LANG' lang is $LANG
${name} 取值
取得版本信息
cd /lib/modules/$(uname -r)/kernel
取消变量的方法为使用 unset :“unset 变量名称”
export 自订变量转成环境变量 env 与 set 现在知道有所谓的环境变量与自订变量
export 变量名称 子程序获取不到bash自定义的变量,需要用这个设置成全局变量
locale -a 语系
变量键盘读取
read [-pt] variable
-p :后面可以接提示字符!
-t :后面可以接等待的“秒数!”这个比较有趣~不会一直等待使用者啦!
read atest 然后输入This is a test 取值 echo ${atest}
提示使用者 30 秒内输入自己的大名,将该输入字串作为名为 named 的变量内容
read -p "Please keyin your name: " -t 30 named
declare [-aixr] variable 宣告变量的类型
-a :将后面名为 variable 的变量定义成为阵列 (array) 类型
-i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r :将变量设置成为 readonly 类型,该变量不可被更改内容,也不能 unset
设置上面提到的 var[1] ~ var[3] 的变量
var[1]="small min" ,var[2]="big min" , var[3]="nice min"
echo "${var[1]}, ${var[2]}, ${var[3]}"
限制用户使用资源
ulimit [-SHacdfltu] [配额]
-H :hard limit ,严格的设置,必定不能超过这个设置的数值;
-S :soft limit ,警告的设置,可以超过这个设置值,但是若超过则有警告讯息。
在设置上,通常 soft 会比 hard 小,举例来说,soft 可设置为 80 而 hard
设置为 100,那么你可以使用到 90 (因为没有超过 100),但介于 80~100 之间时,
系统会有警告讯息通知你!
-a :后面不接任何选项与参数,可列出所有的限制额度;
-c :当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),
这种文件就被称为核心文件(core file)。此为限制每个核心文件的最大容量。
-f :此 shell 可以创建的最大文件大小(一般可能设置为 2GB)单位为 KBytes
-d :程序可使用的最大断裂内存(segment)容量;
-l :可用于锁定 (lock) 的内存量
-t :可使用的最大 CPU 时间 (单位为秒)
-u :单一使用者可以使用的最大程序(process)数量。
命令别名与历史命令
alias lm='ls -al' 取别名
unalias lm
history [- ]
n :数字,意思是“要列出最近的 n 笔命令列表”的意思!
-c :将目前的 shell 中的所有 history 内容全部消除
-a :将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles ,
则默认写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
-w :将目前的 history 记忆内容写入 histfiles 中!
万用字符:::
* 代表“ 0 个到无穷多个”任意字符
? 代表“一定有一个”任意字符
[ ]同样代表“一定有一个在括号内”的字符(非任意字符)。例如 [abcd] 代表“一定有一
个字符, 可能是 a, b, c, d 这四个任何一个”
[ -]若有减号在中括号内时,代表“在编码顺序内的所有字符”。例如 [0-9] 代表 0 到 9 之
间的所有数字,因为数字的语系编码是连续的!
[^]若中括号内的第一个字符为指数符号 (^) ,那表示“反向选择”,例如 [^abc] 代表
一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
# 注解符号:这个最常被使用在 script 当中,视为说明!在后的数据均不执行
\ 跳脱符号:将“特殊字符或万用字符”还原成一般字符
| 管线 (pipe):分隔两个管线命令的界定(后两节介绍);
; 连续指令下达分隔符号:连续性命令的界定 (注意!与管线命令并不相同)
~ 使用者的主文件夹
$ 取用变量前置字符:亦即是变量之前需要加的变量取代值
& 工作控制 (job control):将指令变成背景下工作
! 逻辑运算意义上的“非” not 的意思!
/ 目录符号:路径分隔的符号
>, >> 数据流重导向:输出导向,分别是“取代”与“累加”
<, << 数据流重导向:输入导向 (这两个留待下节介绍)
' ' 单引号,不具有变量置换的功能 ($ 变为纯文本)
" " 具有变量置换的功能! ($ 可保留相关功能)
$(命令) 命令为可以先执行的指令,亦可使用
() 在中间为子 shell 的起始与结束
{ } 在中间为命令区块的组合!
1> :以覆盖的方法将“正确的数据”输出到指定的文件或设备上;
1>>:以累加的方法将“正确的数据”输出到指定的文件或设备上;
2> :以覆盖的方法将“错误的数据”输出到指定的文件或设备上;
2>>:以累加的方法将“错误的数据”输出到指定的文件或设备上;
cmd1 && cmd2 若 cmd1 执行完毕且正确执行则开始执行 cmd2
cmd1 || cmd2 若 cmd1 执行完毕且正确执行,则 cmd2 不执行 cmd1完毕且为错误执行 cmd2
撷取命令 一段数据经过分析后,取出我们所想要的
cut, grep
cut -d'分隔字符' -f fields cut -d ':' -f 5 cut -d ':' -f 3,5 第 3 与第 5 列
cut -c 字符区间
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
grep [-acinv] [--color=auto] '搜寻字串' filename
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字串' 内容的那一行!
--color=auto :可以将找到的关键字部分加上颜色的显示喔!
grep 'root' 有出现 root 的那一行就取出来
last ;grep 'root' ;cut -d ' ' -f 1 在 last 的输出讯息中,只要有 root 就取出,并且仅取第一栏
排序命令
sort [-fbMnrtuk] [file or stdin]
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空白字符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用“纯数字”进行排序(默认是以文字体态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符号,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
uniq [-ic]
-i :忽略大小写字符的不同;
-c :进行计数
wc [-lwm]
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;
双向重导向 同时将数据流分送到文件去与屏幕
tee [-a] file
-a :以累加 (append) 的方式,将数据加入 file 当中!
su -username 切换用户 切换root可以 su即可,但是环境变量不会改变,因此需要用 su -
//切换身份来进行某项任务
sudo 配置/etc/sudoers 配置用 visudo !表示禁止执行的命令 用 , 分隔多个命令
sudo [-b] [-u 新使用者帐号]
-b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
-u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root
你想要以 sshd 的身份在 /tmp 下面创建一个名为 mysshd 的文件
sudo -u sshd touch /tmp/mysshd
[root@study ~]# visudo
User_Alias ADMINS = pro1, pro2, pro3, myuser1
ADMINS ALL=(root) /bin/su -
上述的 pro1, pro2, pro3, myuser1 这四个人,只要输入“ sudo su - ”并且输入“自己的密码”后 变成 root
特殊的 shell, /sbin/nologin shell 的用户即使有了密码也无法登陆 指的仅是无法使用 bash 或其他 shell登陆系统
利用 /etc/nologin.txt 自定义提示语
w 或 who 目前已登陆在系统使用者
lastlog 每个帐号的最近登陆的时间 会去读取 /var/log/lastlog 文件
使用者对谈: write, mesg, wall
write 使用者帐号 [使用者所在终端接口]
who
vbird1 tty3 2015-07-22 01:55 <==有看到 vbird1 在线上
root tty4 2015-07-22 01:56
write vbird1 pts/2
内容 //[crtl]-d 来结束输入
mesg n 拒绝消息 mesg y
wall "I will shutdown my linux server..." (广播)
RAID-0 (等量模式, stripe):性能最佳 先切出等量的区块,平均等量放到每个磁盘
只要有任何一颗磁盘损毁,所有数据都会遗失而无法读取
RAID-1 (映射模式, mirror):完整备份 总容量会是全部磁盘容量的一半,读性能高,写入差
RAID 1+0,RAID 0+1组合使用 不需要经过计算的striping(写入) 读写性能也比其他的 RAID 等级好太多了
RAID-5 至少需要三颗以上的磁盘才能够组成这种类型的磁盘阵列 写入类似 RAID-0
写入(striping)过程 加入一个同位检查数据 (Parity) 这个数据会记录其他磁盘的备份数据
原本的 3 颗磁盘只会剩下 (3-1)=2 颗磁,损毁的磁盘数量大于等于两颗数据就损毁 读性能高,写较低
RAID 6 使用两颗磁盘的容量作为 parity 的储存 允许出错的磁盘数量就可以达到两颗
项目 RAID0 RAID1 RAID1-0 RAID5 RAID6
最少磁盘数 2 2 4 3 4
最大容错磁盘数 无 n-1 n/2 1 2
数据安全性 完全没有 最佳 最佳 好 比RAID5好
理论写入性能 n 1 n/2
at,一种是突发性的,就是这次做完以后就没有的那一种 要有 atd 这个服务支持
crontab,一种是例行性的,就是每隔一定的周期要来办的事项 crond服务支持
[root@study ~]# systemctl restart atd # 重新启动 atd 这个服务
[root@study ~]# systemctl enable atd # 让这个服务开机就自动启动
[root@study ~]# systemctl status atd # 查阅一下 atd 目前的状态
/etc/at.allow 在这个文件中的使用者才能使用 at
/etc/at.deny
at [-mldv] TIME 最好使用绝对路径
-m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当于 atq,列出目前系统上面的所有该使用者的 at 调度;
-d :at -d 相当于 atrm ,可以取消一个在 at 调度中的工作;
-v :可以使用较明显的时间格式列出 at 调度中的工作列表;
-c :可以列出后面接的该项工作的实际指令内容
TIME:时间格式,这里可以定义出“什么时候要进行 at 这项工作”的时间,格式有:
再过五分钟后,将 /root/.bashrc 寄给 root 自己
at now + 5 minutes; /bin/mail -s "testing at job" root ; /root/.bashrc;
job 2 at Thu Jul 30 19:35:00 2015
# 上面这行信息在说明,第 2 个 at 工作将在 2015/07/30 的 19:35 进行!
# 而执行 at 会进入所谓的 at shell 环境,让你下达多重指令等待运行!
将上述的第 2 项工作内容列出来查阅
at -c 2
#!/bin/sh <==就是通过 bash shell 的啦!
# atrun uid=0 gid=0
# mail root 0
umask 22
....
查询目前主机上面有多少的 at 工作调度
atq
将上述的第 3 个工作移除
atrm 3
/etc/cron.allow /etc/cron.allow 比 /etc/cron.deny 要优先
/etc/cron.deny
创建工作调度之后,该项工作就会被纪录到/var/spool/cron/
fork and exec:程序调用的流程
程序都会借由父程序以复制 (fork)的方式产生一个一模一样的子程序, 然后被复制出来的子程序再以 exec
的方式来执行实际要进行的程序,最终就成为一个子程序的存在
Linux 下以文字界面登陆,在屏幕当中显示错误讯息后就挂了
[Alt]+[F1].....[F7] 来切换到其他的终端机界面
ps -aux 找出刚刚的错误程序,然后kill
工作管理 (job control)
直接将指令丢到背景中“执行”的 &
tar -zpcf /tmp/etc.tar.gz /etc &
tar -zpcf /tmp/etc.tar.gz /etc; /tmp/log.txt 输出信息重定向到/tmp/log.txt
观察目前的背景工作状态:
jobs [-lrs]
-l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
-r :仅列出正在背景 run 的工作;
-s :仅列出正在背景当中暂停 (stop) 的工作
将背景工作拿到前景来处理
fg %jobnumber
%jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!
[root@study ~]# find / -perm /7000 > /tmp/text.txt
# 此时,请立刻按下 [ctrl]-z 暂停!
[3]+ Stopped find / -perm /7000 > /tmp/text.txt
jobs ; bg %3 ; jobs
[3] Running find / -perm /7000 > /tmp/text.txt &
kill -signal %jobnumber
kill -l
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
-1 :重新读取一次参数的配置文件 (类似 reload);
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作。与 -9 是不一样的。
-2 :代表与由键盘输入 [ctrl]-c 同样的动作;
ps aux ;==观察系统所有的程序数据
ps -lA ;==也是能够观察所有系统的数据
ps axjf ;==连同部分程序树状态
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。
ps -l 只能查阅自己 bash 程序 有'-'这个符号
F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
若为 4 表示此程序的权限为 root ;
若为 1 则表示此子程序仅进行复制(fork)而没有实际执行(exec)。
S:代表这个程序的状态 (STAT),主要的状态有:
R (Running):该程序正在运行中;
S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>打印)
T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
C:代表 CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先顺序,数值越小代表该
程序越快被 CPU 执行。详细的 PRI 与 NI 将在下一小节说明
ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪
个部分,如果是个 running 的程序,一般就会显示“ - ” / SZ 代表此程序用掉多少内存 /
WCHAN 表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。
TTY:登陆者的终端机位置,若为远端登陆则使用动态终端接口 (pts/n);
TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时
间;
CMD:就是 command 的缩写,造成此程序的触发程序之指令为何。
top [-d 数字] | top [-bnp]
选项与参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。默认是 5 秒;
-b :以批次的方式执行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批次的结果输出成为文件。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p :指定某些个 PID 来进行观察监测而已。
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。
q :离开 top 软件的按键。
pstree [-A|U] [-up]
选项与参数:
-A :各程序树之间的连接以 ASCII 字符来连接;
-U :各程序树之间的连接以万国码的字符来连接。在某些终端接口下可能会有错误;
-p :并同时列出每个 process 的 PID;
-u :并同时列出每个 process 的所属帐号名称。
软件安装
distribution代表 软件管理机制 使用指令 线上升级机制(指令)
Red Hat/Fedora RPM rpm,rpmbuild YUM (yum) CentOS
Debian/Ubuntu DPKG dpkg APT (apt-get)
rpm -ivh package_name
选项与参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度
rpm -i /mnt/Packages/rp-pppoe-3.11-5.el7.x86_64.rpm
upgrade/freshen
-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装
过旧版,则系统自动更新至新版;
-Fvh
如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只
有已安装至你 Linux 系统内的软件会被“升级”!