Linux初识
1.tree命令=显示当前目录树
tree /app
tree -d=只显示目录
tree -L 2=显示两层目录
tree -L 2 -d=只显示文件夹
2.mkdir **=创建目录:
mkdir ***/**/** -p=***是创建父目录下的子目录**
-pv-详细信息
rmdir ***/**/*=删除*
\rm -rf 全部删除
rmdir只能删除目录
rmdir -p ***/**/**=一直递归的往上删除目录
/app的挂载点是删除不了的
3.rm -r 递归目录树
mkdir -pv /testdir/dir1/{x,y}/{a,b}
4.df显示占用了多少
lsblk显示总大小
df -h\:分区利用率
文件系统 大小 使用 利用率 加载
dd if=/dev/zero of=/boot/bigfile bs=1M count=500
一次读1兆。生成500兆
美团公司中午高峰期满了,磁盘满了,没办法。损失了1000/s,一笔订单是50,每秒损失50*1000*3600=180000000.交易额10%,那就18000000.
服务器的各方面的性能指标都要重视。
空间满了那就删除 rm -f /boot/bigfile
lsof |grep deleted:查看被删除的内容
文件删了,空间没有释放那就麻烦了。
ps aux|grep vim—进程信息
killall vim—删除进程信息
ps:阿里每秒钟25万笔/s
比较好的删除文件的方法:
> /boot/bigfile—清空文件,占用零个字节。
rm -f /boot/bigfile
5.inode-包含文件系统的所有文件列表
元数据:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
大小和时间戳
直接指向数据块指针:指向数据块。预存12个指针,一个指针4096个字节(4K)。最大容量是48K,文件超过这个容量后放入间接**。
间接块指针:指向下一个文件块的指针块,可以分成1024个指针,每个指针占4个字节。最多可以4K-4兆的文件。
双重间接块指针:里面包含间接块指针,有1024个指针块,1024个指针块分别指向了数据块。最多可以存放4G的文件。
三重间接块指针:
文件的节点表:
文件名 /inode number/ /permode/
f1 1000
f2 1001
f3 1002
存放文件的数据:
data block:
上述两个的连接:
节点表中有指针指向数据表。
6.df -T
7.ls -i 显示节点编号
ls -il
8.touch f1
ls -il f1
rm -f f1
ll -i
9.mkdir /boot/testdir
cd /boot/testdir
ls
touch f{1..524288}
echo f{1..524288}
10.df -i /boot
11.df -h
df -i
12.watch -n 1 df -i /boot
持续的监控这个命令的执行状态,Iuse%
13.touch aaa
rm * -f 删除节点编号(参数不多的情况下)
rm -rf testdir/(参数多的情况下删除目录)
>是清除内容的
14.echo f{1..524288} |xargs touch
touch f1,;touch f2;touch f3.
解决参数过多的问题的命令。节点编号占多了,空间就不能用了。
15.ls / -i
ls -di/ 根本身的节点编号是2开始, 7版本是64开始
16. cd /app/dir1/f1,f2,f3
dir1文件的节点表:
/inode number/ /mode/../data
1000 指针->文件的列表:f1/2/3 f1/2/3node
1001 指针->f1 content
1002
17.目录
a-inode1-数据
b-inode2-数据
18.文件重命名
In (link)file1 file2
创建file1另一个名称file2
stat file*-查看文件的详细信息
ll -i -链接数
上述都是硬链接,不一定在同一个目录中。
把file1删除,不会影响file2的使用,但是链接数会少一个。
本质:删文件实际上删除的是文件目录中对应的节点编号,不是删除内容。
19.shred --help
重复的覆盖,让物理性的恢复数据非常难。
20.ll file2
shred -zvun 10 file2
次数
21.In f1 /root/f111
跨设备链接:
In -s f1 /root/f111
软链接:本质上不是同一个文件。删除文件后,软链接会受影响。链接数不受影响。可以跨分区。可以跨目录。大小是指向硬链接(路径)的字符数。通过快捷方式也能访问原来的内容。
硬链接:本质上是同一个文件,但名字不同。删除文件后,硬链接不影响。连接受受影响。不可以跨分区。不可以跨目录。
软链接:源文件的路径是相对路径,写成相对路径是指相对软链接文件的路径,不是相对当前工作的路径。
22.任何一个目录创建出来后,链接数是2.文件是链接数3.
目录是不能创建硬链接的。
23.符号链接=软链接
24.搜索硬链接:后面讲
25.文件的类型:
file f1:判断文件的类型。
file的工作原理:打开文件,看文件的首部会有文件类型标识的关键字(magic number)。
判断一堆文件:file -f list.txt
cat list.txt
/app/splash
/app
/etc/grub.conf
file -F "|(分隔符)"-f list.txt
file -L
ll /etc/grub.conf,软链接指向的文件类型
file -L s.xpm
file --help
下午:
重定向:重新改变原来的方向。
程序:指令+数据。
读入数据:Input
输出数据:Output
使用一个文件就是打开文件描述符。
文件描述符所在文件:/dev/fd
ps aux|grep vim:进程描述符
ls proc/7525/fd -1
1.三种I/O设备
0-STDIN:默认键盘
1-STDOUT:默认终端
2-STDERR:默认终端
ls > /dev/pts/1
tree -d /etc/ > /app/a.log
标准输出的重定向到a.log
ls > /app/a.log
cat /app/a.log
echo "my hostname is `hostname`" > /app/a.log.
echo "my hostname is `hostname`" >> /app/a.log.
追加的内容,原来的内容还在。时间戳也不刷新。
ls >f1
ll f1:被覆盖
hostname
hostname>f1:被覆盖
set -C:之后执行的命令都不被覆盖
echo haha >| f1:|是强制覆盖
set +C:取消不被覆盖
ls nofile 2> f1
错误信息重定向
&> 文件名
把全部的信息重定向
ls > /app/all.log
pwd >> /app/all.log
多个命令重定向:(ls;pwd;hostname) >>/app/all.log
(ls;pwd;hostname)> /app/all.log
cat /app/all.log
错误的信息:
(errcmd;hostname) &> /app/all.log
(errcmd;hostname) > /app/true.log 2> /app/error.log
(errcmd;hostname) > /app/true.log 2> &1
把错误的定位到标准输出中
ll dev/null 表示空
df-看光盘挂到哪边?
rpm -i /misc/cd/Packages/dos。。。。。。。。。。 &> /dev/null
echo error 1>&2:error
echo error 1>&2 > /dev/null:error
(echo error 1>&2) 2> /dev/null
2.标准输入重定向
tr命令
tr[OPTION]
tr 1 a=1->a
tr 12 ab=12->ab
tr 123 ab=123->abb
tr -t 123 ab=12->ab
tr ‘1-9’‘a-i’=对位转换
文件做重换:
tr 'a-z' 'A-Z'< fstab
tr -d 'a-z' < fstab
tr -d 'a-z' < fstab > fstab2
tr -d 'a-z' < fstab > fstab
从老师对重定向的解释出发,为什么可以清空?
tr -s ‘a’
aaa
a
tr -sc ‘a’
aabbccaa
aabcaa
tr -dc 'a'
asdijissaa
CTRL+d:aaa
tr -dc‘a\n’
保留a和回车
tr '\n' '' < f1
tr -d '\n' < f1
seq 1 10 > f1
tr -d ‘\n’< f1
hexdump -C win.txt a
二进制 a 为97.
tr -d ‘\r’< win.txt > newwin.txt
mail -s hi xiebo
nano -s h2 root < mail.txt
多行重定向:
cat >f1 <<EOF(end of file)<<#
cat >f1 <<$
>aaa
>bbbb
>$
cat f1
aaa
bbbb
rm -f f1
cat > f1 << EOF
>aaaa
>bbbb
>EOF
cat f1
aaaa
bbbb
mail -s "h3" root <<E
>how are you
>how old are you
>E
mail -s hi xiebo < mail.txt
whoami
root
mail -s hi `whoami`< mail.txt
echo $PATH
echo $USER=用户名
mail -s hi `whoami` <<EOF
>HI,$USER
>test2
>EOF
mail -s hi `whoami`
nano name.txt
wang
zhao
li
xie
cheng
cat name.txt
4.使用管道链接命令
文件的类型:
命令1|命令2|命令3|...
ls | tr 'a-z' A-Z
who | tr -d '\n'删除\n
cat mail.txt |mail -s h5 root
who | tr 'a-z' A-Z
ls |tee ls.out
ls |tee ls.out
cat ls.out
hostname |tee -a ls.out
cat ls.out
5.tee
I/0重定向:改变默认位置
(1)ls /err 2> /app/err.log
错误信息存放到文件中
(2)ls /dir 2>> /app/err.log
重定向到2中
发消息:wall hi,i am xiebo
错的文件
ls /err /boot > /app/f1 2> /app/f2
cat /app/f1
cat /app/f2
错的信息重定向
ls /err /boot > /app/all 2>1
cat /app/all
ls /err /boot &> /dev/all
/*****选项****/dash(-)
-a:all,所有的(包括隐藏的)
-l:详细的信息
-p * **:**起别名为*
-t *:打印*的路径
-d *:清除*
-k *:匹配的
-r:清除所有
-u:某一类
-c:取消
-e:解释
-f:简单说明
-n:不自动换行
. :包含隐藏目录
~: 所有的
*:当前目录下的子目录,不包括隐藏
一、资源分派
Authentication 认证
Authorization 授权
Accouting|Audition 审计
二、user
令牌token、identity
Linux用户:Username/UID
管理员:root,0
普通用户:
Linux上下文:
身份
/bin/cat
/bin/more
以进程发起者的身份决定的:
当用户去访问某个东西的时候,是由用户的身份决定的。