linux基础,用户登录信息、进程管理、磁盘管理

服务器用户登录信息、进程管理、磁盘管理

一. 用户登录信息命令

whoami --类似$USER

who --当前系统的登录信息

w --比who的信息更多

users --显示who的第一列

uptime --登录的时间和负载

tty --查看当前终端

who am i --查看当前终端的信息

  • who

root tty1 2014-07-21 15:02 (:0)

root pts/0 2014-07-21 15:02 (:0.0)

root pts/1 2014-07-21 15:02 (:0.0)

root pts/2 2014-07-21 16:09 (:0.0)

last --登录成功的信息,读取/var/log/wtmp日志文件

lastb --登录失败的信息,读取/var/log/btmp日志文件

lastlog --不同用户最后一次登录的信息,读取/var/log/lastlog日志文件

  • file /var/log/wtmp --查看一个文件的类型,一般来说只ascii或text类型的文件可以直接cat,这种数据类型看不了,只能用专门的程序去读取,此文件就是用last命令来看
    /var/log/wtmp: data

二. 进程管理

  • 1. ps命令

ps - report a snapshot of the current processes.

# ps 

PID TTY TIME CMD

6125 pts/5 00:00:00 bash

6134 pts/5 00:00:00 ps

pstree --显示系统当前所有进程及其关系

# cat /proc/3429/status |head -5

Name: ibus-daemon

State: S (sleeping)

Tgid: 3429

Pid: 3429

PPid: 3244

# cat /proc/3244/status |head -5

Name: im-settings-dae

State: S (sleeping)

Tgid: 3244

Pid: 3244

PPid: 1

# cat /proc/1/status |head -5

Name: init

State: S (sleeping)

Tgid: 1

Pid: 1

PPid: 0

ps -ef 或 ps aux等

# ps -ef |grep firefox |grep -v grep

root 6395 6125 2 16:38 pts/5 00:00:00 /usr/lib64/firefox/firefox

PID 进程号

PPID 父进程

特殊的进程:

0号:负责系统启动和启动1号2号进程,启动之后变成空闲进程

1号:负责启动其他进程,/sbin/init,负责启动终端(tty)

2号:负责启动其他系统需要的资源和进程

(idle) |--->1号进程(init)---> ......

0号进程--|

|--->2号进程(kthreadd)---> ......

  • 2. kill命令

kill - terminate a process

kill命令是用来给一个特定的pid发送信号的

# kill -l --查看所有的信号

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

常见的信号

1 SIGHUP 挂断

2 SIGINT 中断,ctrl+c

3 SIGQUIT 退出,ctrl+ 或 ctrl+shift+|

9 SIGKILL 终止

10 SIGUSR1 用户自定义

15 SIGTERM kill命令默认信号

kill -9 等于 kill -SIGKILL

kill -15 等于 kill -SIGTERM

kill -1 等于 kill -SIGHUP

kill -10 等于 kill -SIGUSR1

实验验证:

# yum install httpd*

# /etc/init.d/httpd restart

# ps -ef |grep httpd |grep -v grep

root 2681 1 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2688 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2689 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2690 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2691 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2692 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2693 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

apache 2694 2681 0 15:02 ? 00:00:05 /usr/sbin/httpd

apache 2695 2681 0 15:02 ? 00:00:00 /usr/sbin/httpd

或者使用

# lsof -i:80

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

httpd 2681 root 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2688 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2689 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2690 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2691 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2692 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2693 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2694 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

httpd 2695 apache 4u IPv6 15655 0t0 TCP *:http (LISTEN)

实验1:

# kill -9 2681

# ps -ef |grep httpd |grep -v grep --再去看,发现8个子进程还在,网站也还可以正常访问

# /etc/init.d/httpd restart --重启服务报错,解决方法,全kill掉重启

父进程终止之后,1号进程会收养孤儿进程

批量杀进程的方法

1,kill -9 2688 2689 ......

2,ps -ef |grep httpd |grep -v grep |awk '{print $2}' |xargs kill -9

3,pgrep httpd |xargs kill -9

4,killall httpd

5,pkill httpd

6,skill httpd

7,kill -9 pidof httpd

实验2:

# kill -15 pid --相比于kill -9来说,它会把所有子进程一起杀掉

实验3:

# kill -HUP pid --进程没有被杀,只是子进程pid变了,相当/etc/init.d/httpd reload
  • 3. trap命令

Trap signals and other events.

捕获信号,在接收到信号后将要采取动作。

格式:

trap command signal

它有三种形式分别对应三种不同的信号回应方式。

第一种:

trap "commands" signal-list

当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令。

第二种:

trap signal-list

trap不指定任何命令,或者是 "-" ,接受信号的默认操作,默认操作是结束进程的运行。

第三种:

trap "" signal-list

trap命令指定一个空命令串,允许忽视信号,我们用到的就是这一种。

如果要重置某个信号的处理条件到其默认值,只需简单的将command设置为-或者留空。如果要忽略某个信号,就把command设置为空字符串 ""。一个不带参数的trap命令将列出当前设置的信号及其行动的清单。

※ 脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。

例:trap "echo no way" 1 2 3 9 --指定了命令,如果遇到 HUP INT QUIT KILL 信号,则执行 echo no way 命令

trap -l --列出所有的信号

trap -p --列出信号的处理办法

trap "" INT QUIT --遇到 INT 和 QUIT 信号,则忽略,什么也不做

trap 1 2 3 9 --没有指定命令部分,恢复 HUP INT QUIT KILL 这些信号设置;

  • 4. job管理

linux下有前台和后台的概念,每个bash终端都可以运行自己的job,注意不能跨bash终端管理

& --后台运行符号,运行的程序不会占用你的终端

# firefox &

[1] 6003 --1代表job号,6003代表的就是pid(process identification)

# vim /etc/passwd --在这里按下ctrl+z键,作用是把job暂停到后台,SIGSTOP

[2]+ Stopped vim /etc/passwd

# vim /etc/shadow --再按ctrl+z放到后台,与ctrl+c(中断)不同

[3]+ Stopped vim /etc/shadow

# jobs --列出后台job列表,别的终端看不到的

[1] Running firefox &

[2]- Stopped vim /etc/passwd

[3]+ Stopped vim /etc/shadow

jobs -l --还要列出pid号

jobs -s --只列出暂停的jobs

jobs -r --只列出运行的jobs

# fg %1 --把一号job的firefox 调到前台

firefox

fg = foreground --前台

# jobs -l

[1]+ 6003 Stopped firefox

[2] 6036 Stopped vim /etc/passwd

[3]- 6074 Stopped vim /etc/shadow

# kill %1

%number 引用后台作业

%% 当前作业

%+ 当前作业

%- 前一个作业

# jobs -l

[1]+ 9815 Stopped firefox

  • bg %1 --把1号job的firefox由stop状态放到后台执行,就是变为running状态
# jobs -l

[1] 6003 Running firefox &

[2]- 6036 Stopped vim /etc/passwd

[3]+ 6074 Stopped vim /etc/shadow

bg = background --后台

# cp /soft/* /test/ -rf --如果你要做一个大文件的拷贝,
不加后台符号这个终端就只能等它拷完才能用
# cp /soft/* /test/ -rf & --所以可以加一个后台符号让它在后台拷就行

但这里还考虑一个问题,如果它还没有拷完,而我不小心把这个终端关了,那么这个程序也会停止,造成没拷完的情况

所以把要做的事锁定到后台,在前面加一个nohup命令就可以了

# nohup cp /soft/* /test/ -rf & 

--你可以测试一下,把再次把终端关闭,再开一个终端查看,用jobs -l也是看不到这个job(因为换了终端),但是拷贝仍在继续)

5. 查看系统有关信息的相关命令

top free nice renice (vmstat,iostat,mpstat,sar等)

top - 17:44:59 up 43 min, 3 users, load average: 0.00, 0.08, 0.23

Tasks: 212 total, 3 running, 209 sleeping, 0 stopped, 0 zombie

Cpu(s): 5.2%us, 3.0%sy, 0.0%ni, 90.2%id, 1.0%wa, 0.2%hi, 0.3%si, 0

Mem: 3798572k total, 3643268k used, 155304k free, 52644k buffers

Swap: 524280k total, 0k used, 524280k free, 3055808k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

3596 root 20 0 90576 39m 1808 S 10.3 1.1 4:10.20 x0vncserver 2957 root 20 0 134m 16m 8580 R 7.6 0.4 2:59.39 Xorg

3562 root 20 0 306m 14m 9860 S 1.3 0.4 0:04.03 gnome-termin

11 root 20 0 0 0 0 R 0.7 0.0 0:04.99 events/0

1 root 20 0 19348 1456 1148 S 0.0 0.0 0:00.78 init

..............

top第一行的数据也可以用uptime或w来查看

load average: 0.08, 0.12, 0.08--分别代表cpu一分钟内,五分钟内,十五分钟内的平均负载

进程状态

s sleeping --睡眠状态,有可能会被其它信号或者程序唤醒

R running --运行状态

Z zombie --僵死进程

D --不可中断的睡眠,一般是等待硬件的唤醒

T --进程暂停

top -b -n 2 > /root/Desktop/top.txt --把top的输出内容重定向到一个文件

top的信息从哪来?

/proc

--查看内存使用情况

# free

total used free shared buffers cached

Mem: 2065980 2012420 53560 0 73192 1569380

-/+ buffers/cache: 369848 1696132

Swap: 4096564 136 4096428

第一行:total 总的物理内存

used 已经使用的物理内存

free 空闲的物理内存

shared 共享内存,它是用于unix与不同进程之间的一个数据共享,很少程序会用到,但是 oracle 会用到共享内存 --ipcs查看共享内存段的使用情况

buffers 缓冲区,用于存储速度不同步的设备或者优先级不同的设备之间的传输数据的区域。通过缓冲区,可以使进程之间的相互等待减少,从而使从速度慢的设备读入数据时,速度快的设备的操作不发生间断。

cached 因为cpu的速度比内存快,会设立一级缓存,二级缓存的cache。但linux下free命令这里的cached指的是page cache的内存,文件系统的cache

2012420-73192-1569380 = 369848 --指的实实在在的程序用掉的内存

53560+73192+1569380 = 1696132 --指的就是实际可挪用的内存

2065980 =369848+1696132

--关于linux的内存释放

linux使用的内存不会象windows那样关掉一个进程或者程序,马上释放内存,而是都缓存起来(buffer+cache)

/proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches --linux下内存释放在这里指的就是丢掉cache,把这个值改为3就可以,但实际没有必要,实际生产环境不要乱用

linux的内存工作原理?

cpu--> 内存 --> 磁盘 (异步过程)

内存会把使用过的数据缓存起来(buffer+cache),以页为单位(page size为4096byte)

内存处理的数据,满足一定的条件(由一些内核参数来控制,比如默认30秒,或者内存脏数据达到一定比率等)才会写到磁盘

# /usr/bin/time -v mysql

Major (requiring I/O) page faults: 36 --主要页面故障,相当于是内存没命中的次数

Minor (reclaiming a frame) page faults: 646 --次要页面故障,相当于是内存命中

# /usr/bin/time -v mysql --再执行一次,主要页面故障为0,表示被内存缓存了,命中了

小测试:

# /usr/bin/time -v firefox &

# /usr/bin/time -v firefox & --做两次,对比打开时间和主要页面故障等参数

# echo 3 > /proc/sys/vm/drop_caches

# /usr/bin/time -v firefox & --扔过缓存后,再执行对比

什么时候才会用到swap?

一般来说是内存不够。但有些时候内存里不常用的一些页(page,为内存的最小单位)linux也会把它暂时放到swap.(此过程没必要去控制它,只知道有这回事就行了)

6. 进程优先级(priority) nice renice

优先级有一个数字范围为-19到20,数字越小优先级越高

优先级高的进程占用的资源(CPU,内存等)较多

单核CPU,在同一个时间点内也只能做一件事,那么它如何去跑多任务。它其实把时间分片,然后通过中断(硬件中断和软件中断)在不同的任务间切换(上下文切换)。这种在不同任务间的间的调度叫进程调度。

# vim /tmp/1.sh

#!/bin/bash

a=0

while [ $a -le 1000000 ]

do

let a++

done

实验1:

两个终端同时执行下面两条,服务器越卡,效果越明显。还可以开第三个终端打开top来比较两者占用的资源

第一终端

# time sh /tmp/1.sh

real 0m13.745s

user 0m11.502s

sys 0m0.479s

第二终端

# time nice --19 sh /tmp/1.sh --这是表示指定优先级为-19

real 0m11.835s

user 0m11.467s

sys 0m0.359s

实验2:

还是做上面的实验,但用top查看到优先级高的PID,然后用第四个终端速度使用renice 19 pid,把它优先级改低

结果是改低后第二终端执行时间变成比第一终端执行时间长了

总结:普通用户只能改自己管理的进程的优先级,并且只能改低,不能改高。只有管理员才能把进程优先级改高

三. 磁盘管理

  • 1.fdisk和parted

raid(可选)-->远程存储访问(iscsi,gnbd)(可选)-->分区-->LVM(可选)-->格式化-->挂载-->分布式文件系统(可选)

今天我这里只讨论

分区-->格式化-->挂载

MSDOS/GPT

相关的基本管理命令有fdisk,parted(如果是用的GPT分区,则不能使用fdisk)

fdisk - Partition table manipulator for Linux (不能用于GPT分区)

# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes

255 heads, 63 sectors/track, 60801 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0003f808

Device Boot Start End Blocks Id System

/dev/sda1 * 1 33 262144 83 Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2 33 7682 61440000 8e Linux LVM

/dev/sda3 7682 7747 524288 82 Linux swap / Solaris
# fdisk /dev/sda

Command (m for help): m

Command action

a toggle a bootable flag --表示一个分区作为引导分区

b edit bsd disklabel

c toggle the dos compatibility flag

d delete a partition --删除一个分区

l list known partition types --列出已知的分区类型

m print this menu

n add a new partition --增加一个分区

o create a new empty DOS partition table

p print the partition table --打印当前的分区表

q quit without saving changes --不保存退出

s create a new empty Sun disklabel

t change a partition's system id --改变分区类型ID值

u change display/entry units

v verify the partition table

w write table to disk and exit --保存退出

x extra functionality (experts only)

分区:如果你要分四个以上分区,请把第四个分为extended扩展分区

而且扩展分区把多余的所有空间都划分进去,否则会造成空间的浪费

Command (m for help): n

Command action

e extended

p primary partition (1-4)

e --第四个分区选e

Selected partition 4

First cylinder (7747-60801, default 7747): --直接回车

Using default value 7747

Last cylinder, +cylinders or +size{K,M,G} (7747-60801, default 60801): --直接回车,全划分进去

Using default value 60801

Command (m for help): n --第五个之后的分区就不会再问你是分e还是p类型

First cylinder (7747-60801, default 7747):

Using default value 7747

Last cylinder, +cylinders or +size{K,M,G} (7747-60801, default 60801): +1G --我这里划分1G,用于测试

Command (m for help): w --保存

The partition table has been altered!
# partx -a /dev/sda 

--这样去刷新一下,在rhel5里是用partprobe命令。如果刷新多次都不成功,就重启你的系统

# ls /dev/sda* --用此命令看到你新分区的设备名有了,就表示OK了

/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5

格式化

# mkfs -t ext4 /dev/sda5

# mkfs.ext4 /dev/sda5 --这两个命令任选其一去执行

挂载

# mkdir /test

# mount /dev/sda5 /test

===========================================================

使用parted(可用于msdos分区和GPT分区)分一个分区

# parted

GNU Parted 2.1

Using /dev/sda

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) help --查看帮助

(parted) print

Model: ATA WDC WD5000AAKX-0 (scsi)

Disk /dev/sda: 500GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Number Start End Size File system Name Flags

1 1049kB 211MB 210MB fat16 boot

2 211MB 420MB 210MB ext4

3 420MB 105GB 105GB ext4

4 105GB 210GB 105GB ext4

5 210GB 273GB 62.9GB ext4

6 273GB 277GB 4194MB linux-swap(v1)

(parted)

(parted) mkpart --分区,删除分区就是rm

Partition name? []?

File system type? [ext2]? ext4

Start? 277GB

End? 278GB

(parted) print

Model: ATA WDC WD5000AAKX-0 (scsi)

Disk /dev/sda: 500GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number Start End Size File system Name Flags

1 1049kB 211MB 210MB fat16 boot

2 211MB 420MB 210MB ext4

3 420MB 105GB 105GB ext4

4 105GB 210GB 105GB ext4

5 210GB 273GB 62.9GB ext4

6 273GB 277GB 4194MB linux-swap(v1)

7 277GB 278GB 755MB --刚分的新分区

(parted) quit
# partx -a /dev/sda

# mkfs -t ext4 /dev/sda7

# mkdir /notes

# mount /dev/sda7 /notes
  1. mount命令
# mount --查看现在的挂载信息

# df -h --查看当前哪些分区挂载哪些目录的对应信息

# umount /fdisk/ 
--umount 时报busy的错误,一般是因为有程序占用,最常见的就是bash占用,要先cd出来,再umount

umount: /fdisk: device is busy

umount: /fdisk: device is busy

--如果cd出来了,umount时还是报busy错误,尝试一下下面两条命令

# lsof /fdisk/

# fuser -k /fdisk/

--同一个目录,可以被多个分区mount,但是只显示最后一次mount的分区的内容,umount的话,就要一级一级的umount

--一个分区也可以挂载到多个目录

mount的用法

挂载远程的NFS共享目录

mount 10.0.0.2:/share/soft/ /mnt/

在虚拟机里,挂载光盘

mount /dev/cdrom /yum

mount /dev/sr0 /yum

挂载光盘 要加-o loop

mount /soft/rhel-server-6.3-x86_64-dvd.iso /mnt/ -o loop

mount -o loop /soft/rhel-server-6.3-x86_64-dvd.iso /mnt/

针对分区类型挂载

mount -t vfat /dev/sda10 /mnt

mount -t cifs /dev/sda10 /mnt

--cifs common internet file system windows网络邻居共享使用的就是此协议

mount 的特殊用法:

--当你装了两个linux系统在同一台机器上,进入其中一个系统,看不到另一个系统的文件信息,但是可以看到它的分区 ,可以在当前系统建立一个目录,把另一个系统的分区mount过来,就可以使用另一个系统的文件了

--直接把windows的共享目录给mount过来

mount -t cifs -o username=administrator //10.0.0.100/windowsshare /mnt

这样使用的要注意的是 用户名别打错了 共享名尽量简单 windows防火墙要关闭

双系统;一个windows和一个linux

如果你在linux上想拷windows里的东西,直接挂载过来

上面的nfs的挂载和用cifs挂载windows共享的都可能出现一个问题:

当你挂载了远端服务器的共享,但你没有umount它,而服务器先关闭了,那么你这时这个挂载目录会被卡死,象df -h这种命令也会卡住。

  1. 建立一个swap分区
# free -m

total used free shared buffers cached

Mem: 2017 964 1052 0 123 529

-/+ buffers/cache: 312 1705

Swap: 4000 0 4000 --这里
  1. 使用一个新建的分区作为swap分区

新建出一个分区 我这里是1G大小

# mkswap /dev/sda12 --格式为swap分区类型

Setting up swapspace version 1, size = 1011671 kB

# swapon /dev/sda12 --使之生效
# free

total used free shared buffers cached

Mem: 2065980 989096 1076884 0 126236 542432

-/+ buffers/cache: 320428 1745552

Swap: 5084520 0 5084520

# swapoff /dev/sda12 --使之失效
# free

total used free shared buffers cached

Mem: 2065980 2010728 55252 0 9596 1710824

-/+ buffers/cache: 290308 1775672

Swap: 4096564 136 4096428
  1. 使用一个文件作为swap分区
# dd if=/dev/zero of=/swapfile bs=1M count=1000 

--用dd命令创建出一个1000M大小的文件,此文件为二进制文件,不能cat或者vi去看

1000+0 records in

1000+0 records out

1048576000 bytes (1.0 GB) copied, 4.40506 seconds, 238 MB/s

# mkswap /swapfile

Setting up swapspace version 1, size = 1048571 kB

# swapon /swapfile
# free

total used free shared buffers cached

Mem: 2065980 1998744 67236 0 9940 1683508

-/+ buffers/cache: 305296 1760684

Swap: 5120556 136 5120420
  1. 设置开机后自动挂载目录
# cat /etc/fstab

/dev/mapper/vol0-root / ext4 defaults 1 1

UUID=b61eb070-abf5-4fc9-9794-e3ebf2b520ed /boot ext4 defaults 1 2

/dev/mapper/vol0-home /home ext4 defaults 1 2

UUID=10678818-0206-4a5c-ab0a-ef7baa93664c 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--虚拟目录,都是系统正在运行的信息

LABEL=SWAP-sda2 swap swap defaults 0 0

分区号或者标签号或者uuid 挂载点 挂载类型 挂载参数 是否扫描 扫描级别

# e2label /dev/sda5 /vm --把/dev/sda5的标签改为叫/vm

# e2label /dev/sda5 --查看

/vm

# blkid --用此命令查看所有分区设备的uuid

/dev/mapper/vol0-root: UUID="04836f7a-2657-4139-b043-75360f557dcc" TYPE="ext4"

/dev/loop0: LABEL="RHEL_6.3 x86_64 Disc 1" TYPE="iso9660"

/dev/sda1: UUID="b61eb070-abf5-4fc9-9794-e3ebf2b520ed" TYPE="ext4"

/dev/sda2: UUID="CWWVF2-HkGf-iU4R-DWcK-capi-WgkY-qDyeBO" TYPE="LVM2_member"

/dev/sda3: UUID="10678818-0206-4a5c-ab0a-ef7baa93664c" TYPE="swap"

/dev/sda5: LABEL="/vm" UUID="f59e830a-3c52-4c25-be46-098dbf6371b1" TYPE="ext4"

/dev/sda6: UUID="ae66457d-7765-482e-b1d6-5ab3d0406874" TYPE="ext4"

/dev/sda7: UUID="05615c87-1732-4f6a-ad73-98efd509dbcc" TYPE="swap"

/dev/mapper/vol0-home: UUID="7f266ffe-f05e-4eca-8e32-d14a8066f921" TYPE="ext4"

第一列我要写sda5这个设备就可以有如下写法:

/dev/sda5 /vm ext4 defaults 0 0

LABEL=/vm /vm ext4 defaults 0 0

UUID=f59e830a-3c52-4c25-be46-098dbf6371b1 /vm ext4 defauts 0 0

defaults 代表mount的一个默认参数组,man mount查看

rw 读写 对应ro只读

suid 代表特权位s能够生效 对应nosuid

dev 支持block和character设备 对应nodev

exec 表示有执行权限的文件可以执行 对应noexec

auto 表示可以使用mount -a,使用这个命令可以自动把你fstab文件里的全挂载一遍(如果已经挂载了则不报任何信息,没有挂载就帮你挂载,如果你写的有错误,它就会报错)

nouser 禁止非root用户挂载文件系统

async 异步 对应sync同步

relatime 文件的atime属性在rhel5是访问一次变一次,现在rhel6里只有当atime早于或等于mtime或ctime之一时,访问它才会变(就是因为rhel6里多了relatime这个参数);你可以换成norelatime再加一个strictatime参数去掉这个功能,或者换成noatime那么这个文件系统的文件被访问都不变atime属性

# cat /proc/devices

# mknod block b 2 1

# mknod char c 3 1

mount -o defaults,norelatime,strictatime /dev/sda5 --这样就是去掉了relatime功能,可以让文件cat一次,atime就会变一次

如果你希望优化你的sda5的atime属性(在defaults后加逗号再加个noatime)

/dev/sda5 /vm ext4 defaults,noatime 0 0

如果我想不重启系统就改成根分区的挂载参数,怎么做?

mount -o remount,noatime,st /

比如下面这条会怎么样?

mount -o remount,noexec / --会造成系统命令除了内部命令都执行不了,只能重启系统解决

------------------------------

fstab错误示例

1,rm -rf /etc/fstab,没有了fstab文件,重启系统会怎么样?

可以启动成功,但所有的分区都没有挂载,你可以重启挂载,写好fstab

2,故意到/etc/fstab里倒数第二列为0的行去改错uuid或者设备名,重启会怎么样?

可以启动成功,只有你改错的那个分区没有挂载而已

3,故意到/etc/fstab里倒数第二列不为0的行去改错uuid或者设备名,重启会怎么样?

在启动过程不久,就会卡住,启动不成功

解决方法:

输入root密码,进入一个shell,但发现里面的文件都是只读的

所以mount -o remount,rw /把根重挂载成读写模式,然后查看正确的设备名或label名或uuid再来修改fstab,保存重启

转自https://www.toutiao.com/i6556368628109804046/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容