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

mail 

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

mail 

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

以进程发起者的身份决定的:

当用户去访问某个东西的时候,是由用户的身份决定的。

 

posted @ 2017-11-18 10:53  bobojames  阅读(130)  评论(0编辑  收藏  举报