00 Linux 基础预习(上)

以前年轻的时候学过很多东西,但是考完试就全扔了,现在只好补补补~

Something about the Linux OS established on MAC via fusion :

1. MAC fusion 的虚拟机文档放位置于 文稿文件夹中

2. 点击command+ctrl释放鼠标

3. clear命令可以用于清屏

4. fn+op+f1~f6

5. 新安装的系统,默认的用户密码与本机一样,我们安装系统之后,不知道root的默认密码,此时我们可以使用 sudo passwd来设置,之后就可以su - root登陆啦~

6. 启动虚拟机设备-》alt-》进入BIOS设置

   启动虚拟机设置-》重新启动

分区

分区-》格式化-》挂载

一、系统分区

1. 主分区,最多只能有4个

2. 扩展分区,不能格式化,数量只能有1个,主分区 + 逻辑分区 = 4

3. 逻辑分区

二、格式化

硬盘分区后需要格式化才能写入数据(高级格式化,逻辑格式化):根据用户选定的文件系统,如FAT32,NTFS,EXT2,EXT4等,在磁盘的特定区域写入特定数据(在分区中划分出一片用于文件管理的磁盘空间存放文件分配表,目录表等信息)。格式化时,将某个分区分割成一个一个等大小的数据块(block),文件一般是随机存放在多个block上(与链表差不多),我们只需要知道初始block的索引就可以得到所有的数据(每个文件都有一个编号对应一个inode号,inode节点保存文件其实block的id号),磁盘碎片的功能就是尽量把文件放在一起~

三、硬件设备

IDE/dev/hd[a-d](primary-secondary, master-slavery)

SCSI/SATA/USB/dev/sd[a-p](先侦测到的先分配文件名)

鼠标/dev/mouse

1)速度,价格

SCSI>IDE

SATA 速度最快,目前最常用,虚拟机也是这个

IDE:


SCSI:

00 Linux 基础预习(上)_第1张图片

SATA:


四、挂载

给分区设置盘符(不同的路径可以挂载不同的分区)

/,根目录

/swap,内存的2倍大,不超过2GB

/boot,启动分区,200MB足够了(防止根目录写满)


常用命令

1. 使用“\”跳脱enter

2. 命令 【-option】 【参数】

- 个别命令不遵循这个格式

- 当有多个选项的时候,可以写在一起(有些顺序是不可以改变的)

- 简化选项和完整选项(如-a -all)

 3. /bin,/sbin,/usr/sbin与/usr/bin之间的区别

Fr: http://blog.csdn.net/kkdelta/article/details/7708250

这些目录都是用来存放命令的,从用户权限的角度来看/sbin只有管理员才可以运行,而/bin可以由管理员和一般用户使用。在系统启动后,/bin,/sbin目录自动挂载到根文件系统(与根文件系统同一个分区),而/usr/bin与/usr/sbin可以与根目录不在同一个分区,

- /bin存放一些普通的基本,如ls,chmod等

- /sbin下的命令属于基本的系统管理命令,比如shutdown,reboot等

- /usr/sbin存放一些网络管理的必备程序如swap,in.*d等

- /usr/bin存放一些应用软件的必备执行文档,比如gcc,man,locale,make等

  • 文件与目录

1. ls(list) 显示目录与文件信息

位置:/bin/ls

例子:ls -ald 文件和目录

- a 显示当前目录下所有文件,包含隐藏文件(.开头)

- l  详细信息的显示,“文件类型与权限 引用次数(硬链接)owener group 大小 最后内容修改日期 名字

时间:linux没有创建时间,只有上次访问时间,文件内容修改时间,文件状态修改时间三个概念

文件类型:“-”表示普通文件,d表示目录,l表示软链接

权限:r 读取,w 写,x 执行

  u   g  o

rw- -r- -r-

- h 人性化显示文件大小

- d 查看当前目录属性

- i 查看inode号


appletekiMacBook-Pro:~ apple$ ls -dlhi Music

379641 drwxr-xr-x+ 7 apple  staff   238B  7 24 11:21 Music


2. mkdir(make directory) 创建新目录

- p 递归创建


appletekiMacBook-Pro:Desktop apple$ mkdir -p ./d1/d2


3. cd(change directory) 改变工作目录

. 当前目录

.. 父目录

位置:shell内置命令

appletekiMacBook-Pro:Desktop apple$ cd ./d1


4. pwd(print working directory) 打印当前工作目录


appletekiMacBook-Pro:d1 apple$ pwd

/Users/apple/Desktop/d1


5. rmdir(remove directory) 删除空目录


appletekiMacBook-Pro:d1 apple$ rmdir d2


6. cp(copy) 复制文件

cp -rp 源文件1/目录1 [源文件2/目录2] … 目的文件/目录(没有相关文件会创建一个,此时可以自己给个新名字)

-r 复制目录

-p 保留文件属性


appletekiMacBook-Pro:Desktop apple$ cp 1.txt 2.txt ./d1/

appletekiMacBook-Pro:Desktop apple$ ls ./d1

1.txt2.txt


7. mv(move) 剪切文件,改名

mv 原文件/目录 目的目录


8. rm(remove) 删除文件(没有恢复的可能了,不是像回收站,但是我们可以用应用软件恢复文件)

-r 删除目录

-f 强制执行(不询问)


9. touch 创建空文件

- touch 文件名

- touch 绝对路径/文件名


想要创建带空格的文件名时,可以采用双引号括起来如:  touch “profile 1”


10. cat 显示文件内容

-n 显示行号

11. tac 倒着显示文件内容

位置:/usr/bin/tac


12. more 分页显示文件内容

- f 翻页

- enter 换行

- q 退出


13. less与more差不多,但是可以向上翻页(pageUp),还可以进行搜索(输入“/关键字”按回车),按n(next)往下找

位置:/usr/bin/less

grep keyword | more

14. head 显示前几行,tail显示末尾几行

- n 指定行数

位置:/usr/bin/head, /usr/bin/tail


15. ln(link) 创建硬链接文件

ln 源文件 目的文件

-s 创建软连接

“l”类型文件表示软link文件,类似windows的快捷方式,这个文件的权限不决定源文档,权限由源文件决定。硬链接文件的文件类型不是l,硬链接相当于拷贝 cp -p,但是与拷贝时硬链接可以同步跟新,删除原档的时候,软链接没了,而硬链接还在~


appletekiMacBook-Pro:Desktop apple$ ln -s 2.txt s2.txt

appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt

-rw-r--r--  1 apple  staff  24  9  2 21:46 2.txt

appletekiMacBook-Pro:Desktop apple$ ls -l s2.txt

lrwxr-xr-x  1 apple  staff  5  9  2 22:01 s2.txt -> 2.txt


怎么判断文件的硬链接?

采用ls -i查看文件的inode号,硬链接和源文件的inode号是一样的~


硬链接不能跨分区,不能针对目录使用,只能是文件

  • 权限管理

1. chmod(change permission mode)  改变文件或目录权限(只有owener和root才能修改文件的权限)

chmod {ugoa} {+-=} {rwx} 或者mode 文件或目录

       mode=421(r — 4, w — 2, x — 1)

-r 递归修改


appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt

-rw-r--r-x  1 apple  staff  24  9  2 21:46 2.txt

appletekiMacBook-Pro:Desktop apple$ chmod u+x,g+w 2.txt(多个权限设置中间不能有空格)

appletekiMacBook-Pro:Desktop apple$ ls -l 2.txt

-rwxrw-r-x  1 apple  staff  24  9  2 21:46 2.txt

00 Linux 基础预习(上)_第2张图片

- file

r: cat/more/head/less/tac

w: vim

x:  执行script,command文件等


- directory

r: ls

w: touch/mkdir/rmdir/rm

x: cd


2. chown(change owner) 改变文件或目录的所有者(只有root才能进行该操作

chown 用户 文件或目录

chown amy:a_init /tmp/amy_file


3. chgrp(change group) 改变文件或目录的所有组

chgrp 用户组 文件或目录


4. umask 显示、设置文件的缺省权限

-S 显示目录目录权限,以rwx形式显示


appletekiMacBook-Pro:d1 apple$ umask

0022(第一个0是特殊权限,022表示目录的缺省权限为777-022)

appletekiMacBook-Pro:d1 apple$ umask -S

u=rwx,g=rx,o=rx

appletekiMacBook-Pro:d1 apple$ ls -dl .

drwxr--r-x  5 apple  staff  170  9  2 21:46 .

  • 查找

1. find(尽量少用这个命令,占用大量系统资源)

find 搜索范围 选项 条件

通配符 “*”

匹配单个字符 “?”

- name 

- iname 不区分大小写

- size 后面跟的是文件大小,多少个512字节 0.5K

+n 大于,-n小于,n等于

- user根据所有者查找

- group根据群组查找

- amin 访问时间         -5(分钟内) +5(大于5分钟)

- cmin 文件属性改变时间 

- mmin 文件内容改变时间

- a 两个条件同时满足

- o 或者


appletekiMacBook-Pro:~ apple$ find /etc -size +16000 -a -size -25000


-exec/-ok 命令 {} \; 对搜索结果执行操作(不需要a和o, ok会询问)

{}表示结果,\转义字符,“;”表示结束     


appletekiMacBook-Pro:~ apple$ find ./Desktop -name d1 -exec ls -l {} \;

total 16

-rw-r--r--  1 apple  staff  24  9  2 21:46 1.txt

-rw-r--r--  1 apple  staff  24  9  2 21:46 2.txt


- type 根据文件类型查找(f文件,d目录,l软链接)

- inum 根据i节点查找(同样可以找到硬链接)


2. locate 在文件资料库中查找文件(创建了还未被收录到文件资料库中就找不到,此时可以执行updatedb命令,但是\tmp下的也可能找不到)

locate 文件名

位置:/usr/bin/locate

- i 不区分大小写查找


3. grep 文件中搜寻字符串匹配的行并输出

grep 关键字 文件

位置:/bin/grep

-i 不区分大小写

-v 排除指定字符串

配置文件的注释或脚本的注释采用“#”开头


4. which  找到命令所在目录以及别名信息

which 命令

位置:/usr/bin/which


5. whereis 找到命令所在目录以及帮助文档路径

位置:/usr/bin/whereis

whereis 命令


6. whatis 只读取命令的简短信息

whatis  命令

1 命令的帮助

5 配置文件的帮助


appletekiMacBook-Pro:~ apple$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

文件一般先查找命令的信息


7. apropos 配置文件(查看配置文件的信息)

  • 帮助

1. man(manual) 获取帮助信息(命令或配置文件的帮助信息)

位置:/usr/bin/min

- /关键字,按n进行next

- q退出

man 配置文件的绝对路径(此时会显示文件的内容,所以只要加上文件名称就可以了,不用绝对路径,如man ls而不是man /bin/ls)


2. help 获取shell内置命令的帮助信息

shell 命令解释器

找不到命令所在路径的都是shell内置命令,不能用man查看信息


3. info

  • 用户管理

1. useradd 添加新用户(只有root可以操作)

useradd name

位置:/usr/sbin/useradd


2. passwd 设置密码(用户可以使用更改自己的密码,而管理员可以更改所有用户的密码)

passwd 用户名(设置完相应密码,某个用户才可以登入使用)

位置:/usr/bin/passwd


3. who 查看登陆用户信息

位置:/usr/bin/who

tty 本地登陆/端口     登陆时间(登陆客户IP地址)

pts 远程登陆/端口


4. w 得到更为详细的用户登陆信息

位置:位置:/usr/bin/who

up 时间(说明服务器已经开启了多长时间)


  • 压缩命令

在linux中,.gz与.zip为压缩文件后缀

1. gzip 压缩文件-》.gz,不保留源文件

gzip只能压缩文件,而不能是目录


2. gunzip 解压缩.gz文件(gzip -d)


3. tar 压缩后文件名(即使没有tar后缀,仍然是打包)  将被打包压缩的目录

压缩后的格式.tar.gz

-c 打包

-z 打包同时压缩

-v 显示详细信息

-f 指定文件名


appletekiMacBook-Pro:Desktop apple$ tar -czf d1.tar.gz ./d1

gzip nba.tar


-x 解包

-z 解压缩

-f 指定解压文件


tar -zxvf nba.tar.gz


4. zip 压缩后文件名 文件或目录

位置:/usr/bin/zip

-r 压缩目录

5. unzip解压缩


6. bzip2 压缩文件(大文件推荐,后缀.bz2)

-k 压缩后保留原文件

tar -cjf(生成.bz2的文件)

      -xjf(解压)


7. bunzip2 

-k 解压缩后保留原文件

  • 网络命令

1. write 给在线用户发送信息,以ctrl+D保存结束

write 用户名(内容出错时,按del删除)

位置:/usr/bin/write


2. wall 给所有在线用户发信(广播信息,包括自己)

wall 发送信息

位置:/usr/bin/wall


3. ping IP地址

-c 指定发送次数,测试网络连通性

ping 自己的IP地址来测试自己网卡是否正常


4. ifconfig 查看和配置网卡信息(root才可以执行,这是修改是暂时的,我们可以setup设置多一点)

ifconfig 网卡名称 ip地址 


5. mail 查看发送电子邮件(不管用户在不在线)

mail 用户

输入mail命令后直接回车,可以查看mailbox,里面每个mail都有序列号

-h 重新返回收件箱

-d 序列号 删除邮件


6. last 查看目前和过去的所有登录系统的用户信息

位置:/usr/bin/last

7. lastlog  所有用户上一次登录的信息

位置:/usr/bin/lastlog

-u UID 只查看某个用户上次的登录信息


8. traceroute 显示数据包到主机间的路径

9. netstat 显示网络相关信息

-t TCP

-u UDP

-l 监听

-r 路由

-n IP地址和端口号


-tlun 查看本机监听的端口

- an 本机所有的网络连接

- rn 查看本机路由表


10. setup 配置网络(redhat,只有root有执行权限)

这种情况下配置ifconfig不是永久生效的

DHCP 自动获取(有DHCP服务器才行)


11. mount 【-t 文件系统如iso9660光盘文件系统】 设备文件名如“/dev/sr0” 挂载点

umount 设备文件名 可以解除挂载(退出挂载点再umount)

mount -t iso9660 /dev/sr0 /mnt/cdrom

  • 关机重启命令

1. shutdown(推荐)

-h 时间(比如now,20:30)  halt

-r 时间    reboot

-c 取消前一个关机命令  cancel

关机重启前应该先停掉服务,而不是直接就断掉(会损坏硬盘)


halt

poweroff(直接断,不好)

init 0

init 6

reboot


系统运行级别:

0 关机 shutdown,默认级别不能设置为0,因为一开机就关机

1 单用户 root   启动最核心的服务,用来作修复(安全模式)

2 不完全多用户(NFS,可能有安全隐患)

3 完全多用户(命令行)

4 未分配

5 图形界面

6 重启 reboot,默认级别不能设置为6,因为一开机就重启


cat /etc/inittab

id:3:initdefaul

runlevel 查询系统运行级别

logout 退出登录

  • 用户和群组

用户管理:越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范,Linux主要是通过用户配置文件来查看和修改用户信息


1. 配置文件

-  /etc/passwd 用户信息文件

1)用户名称

2)密码标识(现在密码一般加密放在/etc/shadow文件中)

passwd因为存放用户信息,所以用户可以看到自己的信息(x表示去/etc/shadow中找密码)

vim /etc/shadow


3)UID

UID(电脑不认识字母,所以用UID标识用户):

0 超集用户(不能说root一定是管理员)

1-499 系统用户(伪用户,系统启动服务命令时自动调用的)

500-65535 普通用户


4)GID

初始组(使用GID匹配/etc/group下面的信息来判断初始组):每添加一个用户,就创建一个同名的组,每个用户都至少有一个组,初始组只有一个,可以修改组名

附加组:指用户可以加入多个其他的用户组,并拥有这个组的权限,附加组可以有多个


5)用户说明

6)家目录/home/用户名 /root

7)登陆之后的shell,命令解释器

根目录和普通用户shell默认是/bin/bash,伪用户/sbin/nologin

shell一不小心改错了,就悲剧了

00 Linux 基础预习(上)_第3张图片

00 Linux 基础预习(上)_第4张图片

- 影子文件/etc/shadow,root可以访问所有文件,权限对它没影响

1)用户名

2)加密密码

SHA512散列加密,!!和*表示没有密码,不能登陆(相同的密码,结果不一样)

暴力破解

3)密码修改日期

时间戳,一样是1970.1.1开始算,多一天+1

4)两次密码的修改间隔之后才能改

5)密码有效期

6)密码修改到期前的警告天数

7)到期之后的宽限期限

0,马上失效

-1,永不失效

8)账号失效时间,同样采用时间戳表示

不管有效期,到这个时间就失效

9)保留


date -d“1970.01.01 16000 days”

echo $(($ (date - -date=“2014/01/06”+%s)/86400+1))


- /etc/group 组信息文件

1)组名

2)组密码标志  /etc/gshadow

3)GID

4)组中附加用户


- /etc/gshadow 组密码文件

1)组名

2)组密码

3)组管理员用户名

4)组中附加用户


- 用户家目录

1)普通用户,自动建立,所有者和所属组都是此用户,权限是700

2)超级用户,/root/,所有者和所属组都是root,权限是550


普通用户-》超级用户

将所属组GID变为0并不能改变什么,而是将UID变成0


- /var(可变)/spool/mail/用户名/   用内存直接练习(就是没有服务器,而是直接客户端)

- 用户模板目录:/etc/skel/ 模板文件   添加用户时,为用户自动创建一些文件

  • 用户和组管理

1. useradd 用户名(只有root可以执行该命令,没密码就不能登陆,同时会创建一个同名初始组)

-u UID   

-d 家目录 手动设置家目录(默认权限700)

-c 用户说明 设置用户说明

-g 组名 手动设置初始组

-G 组名 指定用户的附加组,多个组可以用,隔开

-s shell 指定用户的登录shell,默认是/bin/bash


例子:useradd sc

grep sc /etc/passwd

grep sc /etc/shadow

grep sc /etc/group

grep sc /etc/gshadow

ll -d /home/sc/

ll /var/spool/mail/sc


00 Linux 基础预习(上)_第5张图片

00 Linux 基础预习(上)_第6张图片

用户默认值文件:/etc/default/useradd,/etc/login.defs(MIN_LEN没有生效)

00 Linux 基础预习(上)_第7张图片

00 Linux 基础预习(上)_第8张图片





2. passwd 用户名 (只有root可以改)

修改当前所在用户的密码

-S 查询用户密码的密码状态,仅root可用

-l 锁定用户   root可用(用户已经登入就不能锁)

-u 解锁用户 root可用

00 Linux 基础预习(上)_第9张图片

echo ”123” | passwd - -stdin lamp

前面的结果传给后面

- -stdin就是不手动输入,而是从标准输入获取数据



3. 修改用户信息 usermod

-u UID

-c 用户说明

-G 组名

-L,临时锁定用户

-U,解锁用户锁定


4. 修改用户密码状态 chage(密码之前加任意字符密码就不同会时用户账号登入不了)

chage 用户名

-l 查看详细的密码转态

-d 日期  密码最后一次更改日期,改成0就是从来没有修改密码


5. userdel 用户

-r 删除用户的同时删除用户家目录


手工删除用户(只读文件需要强制保存):

vi /etc/passwd

vi /etc/shadow

vi /etc/group

vi /etc/gshadow

rm -rf /var/spool/mail/用户

rm -rf /home/用户/


我们可以用useradd来证明是否删干净


6. id 用户 

查询用户的 uid gid(初始组) 组(哪些组中)


7. env 

查看当前用户的环境变量


8. su 用户名(超级用户-》普通用户 不用输入密码)

- 连用户的环境变量一起切换

-c 仅仅执行一次命令


su - root -c “useradd user2”

仅仅使用root身份执行“useradd user2”一次


9. groupadd 组名 (一个用户可以有多个组,缺省组名和用户名相同 useradd -g/G 组 用户 )

-g GID 指定组ID (不加,则从默认后面开始增加)

-n 新组名 旧组名


10. groupdel 组名

初始组不能删,只有把该组的初始用户删除后才可以被删

附加用户,可以删,因为初始组还是附加用户同名的组


11. gpasswd 用户 组名

-a 已经存在用户加入组

-d 删除组中的用户

00 Linux 基础预习(上)_第10张图片


文件操作

  • 分区

主分区:最多只能有4个

扩展分区:只能有1个,不能格式化,必须划分成逻辑分区才能使用

逻辑分区:IDE(59) SCSI(11)

  • 文件系统

EXT2,最大支持16TB分区,最大2TB文件

EXT3,支持大小和EXT2相同,但是带有日志功能

EXT4,向下兼容EXT3,支持1EB分区和16TB文件,无限数量子目录,extends连续数据块概念等

  • 命令


1. df 统计分区文件系统的占用情况

-h 使用习惯单位显示容量,文件+系统进程占用的资源,看到的剩余空间是真的可用

-a 查看所有文件系统信息,包括特殊文件系统,如/proc,/sysfs

-T 显示文件系统类型

2. du -h查看目录或文件大小(与ll -h的区别,只统计目录下的文件名占用了多少)

-a 显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量

-s 统计总占用量,不列出子目录和子文件的占用量

df是从文件系统考虑的,还要统计被命令或程序占用的空间。du命令时面向文件的,只计算文件和目录占用的空间,如果一个正在运行的文件被删除,但是df还没反应过来,就会计算多~

3. fsck 分区设备文件名(文件系统修复命令,底层修复,开机时系统自动修复 不用)

-a 不用显示用户提示,自动修复文件系统

-y 自动修复

4. dumpe2fs 分区设备文件名(检测磁盘状态)

查看超级块是否有执行权限等


5. mount 查询系统中已经挂载的设备,-l会显示卷标名称

-a 依据配置文件/etc/fstab的内容,自动挂载

mount | grep /dev/

mount 设备文件名 挂载名

-t 文件系统,如ext3, ext4, iso9660(光驱)等 (vfat[linux,wins])

-L 卷标名,为分区起别名

-o 特殊选项,可以指定挂载的额外选项

remount 重新挂载文件系统

exec 允许文件系统中执行可执行文件   noexec不允许

00 Linux 基础预习(上)_第11张图片

mount -o remount,no exec /home

6. 挂载光盘和U盘

- 创建挂载点

- 挂载


mkdir /mnt/cdrom/

mount -t iso9660 /dev/cdrom /mnt/cdrom/

mount /dev/sr0 /mnt/cdrom


media 光盘

mnt U盘


/dev/cdrom

/dev/sr0


7. 退出目录后,才可以解载

umount 挂载点或设备文件名


8. 挂载U盘

fdisk -l 查看U盘设备文件名(与光盘不同,与硬盘差不多,都是系统自动识别)

找到分区号

mount -t vfat /dev/sdb1 /mnt/usb/

重新挂载,调整编码集


9. Linux默认不支持NTFS文件系统,但是有方法支持~

内核会自动安装驱动

1. 内核重新编译,加入NTFS驱动

2. 利用第三方的软件 

NTFS-3G 插件

00 Linux 基础预习(上)_第12张图片


vfat(fat32)

fat(16)


fdisk手动分区-分区过程:

fdisk -l 查看新硬盘(要想知道是否挂载,使用mount命令)

fdisk /dev/sdb 使用fdisk命令分区  ctrl+退格键


n 新建分区  p查看分区结果  w保存退出(不重启,使用partprobe重新读取分区表的信息)

00 Linux 基础预习(上)_第13张图片

mkfs -t 文件类型 分区   格式化


一重启挂载就会丢,不符合,此时我们引入/etc/fstab实现开机自动挂载和文件修复,但是万一写错了,系统可能不能开机


vi /etc/fstab/

1)设备文件名(名字会变)或者UUID(硬盘唯一识别号 dumpe2fs 分区|more)

2)挂载点

3)默认文件系统

4)挂载参数

5)分区是否被dump备份(每个分区下面的lost+found,分区自动备份的数据放在里面)0不备份,1每天备份,2不定期备份

6)是否被fsck检测,0不检测,其他数字代表检测的优先级,1优先级大于2(手工分区都应该<=2)

mount -a 依赖配置文件,自动挂载,如果不正常会提示

崩溃之后,怎么修改:

1)只有文件写错(要求输入密码),才能用这个方法修复

vi /etc/fstab(不能修改,mount -o remount, rw /)

2)如果不小心删了根分区,那重装吧,科科

10. swap分区(记得把swap分区ID改为82,我们也可以使用vi /etc/fsab修改,如/dev/sdb1 swap swap defauls 0 0:

给swap加入空间是可以的

free 查看swap大小

free -m 按M字节来读

cached:是把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程

buffer:写入数据时,把分散的写入操作保存在内存当中,当达到一定程度再集中写入硬盘,减少磁盘碎片和寻道,加速数据的写入

mkswap 分区 格式化(如果partprobe出错,重启)

swapon 分区 加入swap分区

swapoff 分区 撤销swap分区


内存挂载点:

/proc

/sys

ACL权限

例子:

1)如果新建group,但是一个文件只能有一个初始组

2)找到用户,给权限


1. dumpe2fs 分区是否支持ACL权限

 -h 分区(只显示超级块的信息 default mount options)  


2. mount  临时开启分区ACL权限(如果分区不支持)

mount -o remount,acl / (重新挂载根分区,并挂载加入acl权限)


3. 永久开启ACL权限,修改fstab文件,然后重新挂载或者重新启动(mount -o remount /)

00 Linux 基础预习(上)_第14张图片

4. getfacl 文件名(查看acl权限)

5. setfacl 文件名

-m 设定ACL权限

-x 删除指定的ACL权限

-b 删除所有的ACL权限

-d 设定默认ACL权限

-k 删除默认ACL权限

-R 递归设定ACL权限


00 Linux 基础预习(上)_第15张图片


6. mask是用来指定最大有效权限,如果我们给用户赋予了ACL权限,我们需要和mask相与才能得到真正的权限,setfacl -m m:rx 文件名

7. ACL权限和递归ACL权限

递归是父目录在设定ACL权限时,所有的子文件和子目录拥有与父目录相同权限

setfacl -m u:用户名:权限 -R 文件名(-R位置不可调,这个命令执行的时间有影响,只生效一次,之后再在目录中创建的新文件并没有相同的权限) 

8. 默认ACL权限,就是新来的就告诉他权限(旧学员还是得递归)

setfacl -m d:u:用户名:权限 文件名

权限管理

- SUID 

1、作用对象是可执行的二进制程序

x->s 4代表s 例如4755(2是组的,1是BIT,7是全都有)

chmod 4755 文件名

chmod u+s 文件名

chmod 755 文件名

chmod u-s 文件名


2、命令执行者要对程序拥有x权限(没有x时会用S表示),执行程序时,就获得该程序文件属主的身份(就是暂时获得某个身份,这个临时获得身份,只在程序执行中有效)


vim这个程序如果设置了SUID就可怕了,因为在执行过程中vim就拥有对某个只读文件的root权限,那么那个期间我们就可以利用vim随意更改数据



00 Linux 基础预习(上)_第16张图片

2. SGID

chmod 2755 文件名

chmod g+s 文件名


- 对于可执行的二进制文件的作用与SUID相似,只是身份是组

- 对于目录,该目录下所建立的文件或子目录拥有组都会是该目录的拥有组


3. sticky bit

chmod 1755 目录

chmod o+t 目录名

1)只对目录有效

2)普通用户应该对该目录拥有wx权限

3)如果没有SBIT的话,普通用户拥有写与入权限,就可以删除目录下的所有文件,包括其他用户建立的文件,就是一个用户在目录下创建文件,会被另一个用户删除,此时SBIT就派上用场,除了root可以删除所有文件,普通用户就损有w权限也只能删除自己建立的文件,但不能删除其他用户创建的文件


4. 文件系统属性 chattr

chattr [+-=] [选项] 文件或目录名

-i 对于文件,不允许对文件进行删除,改名,也不能添加和修改数据(只读)。对于目录,只能修改目录下文件的数据,但是不允许建立和删除文件(对root用户也生效,umask对root也生效,但是root可以很方便的+-)

-a 对于文件,只能添加数据,但是不能修改和删除数据,而对于目录表示,只允许在目录中建立和修改文件,不允许删除


5. lsattr 选项 文件名

-a 查看所有文件和目录的属性

-d 只看目录(属性),而不列出子文件


6. sudo 把本来只能超级用户执行的命令赋予普通用户执行,sudo的操作对象是系统命令

- visudo(实际修改的是/etc/sudoers文件)

用户/%组 ALL=(x) ALL(命令)

x为ALL或者本地IP地址,如果是网络,只要NIS服务中有用(集中管理)


授权sc用户可以重启服务器:

visudo

sc ALL= /sbin/shutdown -r now

su - sc

sudo -l(查看可用的sudo命令)

sudo /sbin/shutdown -r now

Vim常用操作

00 Linux 基础预习(上)_第17张图片

- 命令模式

- 编辑模式,输入“:”后面加命令如set nu

- 插入模式(a A, i I, o O)

00 Linux 基础预习(上)_第18张图片

1)定位命令

:set nu 设置行号

:set nonu 取消行号

gg到第一行

G到最后一行

nG到第n行

:n到第n行

$移到行尾

0移到行首

2)删除命令(字符+行)

00 Linux 基础预习(上)_第19张图片

3)复制剪切

00 Linux 基础预习(上)_第20张图片

4)替换字符

00 Linux 基础预习(上)_第21张图片

5)搜索替换(:set noic)

%s表示全文

00 Linux 基础预习(上)_第22张图片

6)保存退出(文件所有者和root可以对只读文件强行保存)

00 Linux 基础预习(上)_第23张图片

7):r 文件名(将文件名导入光标处)

:r !which cat

:r !命令

:r !ls

8)定义快捷键:map 快捷键 触发命令

:map Ctrl+V+P I#

:map Ctrl+V+B 0x

9):n1,n2s/^/#/g(^代表行首,$代表句末)

:n1,n2s/^#//g

:n1,n2s/^/\/\//g

替换:ab mymail [email protected](敲入mymail回车或空格后会自动变成kevin...)

家目录下,创建.vimrc(写入编辑命令,不加冒号),此时里面的命令将永远有效

软件包安装

1. 软件包的分类

Windows的.exe安装包不能在Linux系统上安装,Linux软件包主要分为两类:

- 源码包(脚本安装包)

优点:

1)开源,可以修改源代码

2)因为是编译安装,所以更适合系统,更稳定高效

3)卸载方便,只需要删除安装目录就可以啦

缺点:

1)需要编译,所以速度较慢

2)安装步骤比较多

- 二进制包(RPM包)

Redhat,CentOS的安装包是rpm格式,而Ubuntu和Debian的安装包是其他格式

优点:

1)只要通过命令就可以实现包的安装,升级,查询和卸载

2)安装速度比源代码包安装快的多

缺点:

1)不灵活,不能看到源代码

2)依赖性

2. 命名规则

软件包名 版本 发布次数 Linux平台 硬件平台 扩展名


3. RPM包的依赖性

a->b,b安装后a才能安装成功

树形依赖:a->b->c

环形依赖:a->b->c->a(同时安装)

模块依赖:www.rpmfind.net


4. RPM安装,升级

包全名:没有安装软件包时,使用包全名,注意路径 

包名:已经安装的,使用包名,搜素/var/lib/rpm/中的数据库(不能用vi打开),如httpd

rpm 包全名

-i 安装

-v 显示详细信息

-h 显示进度

- -nodeps 不检测依赖性

-U 升级


5. 卸载

rpm 包名

-e 卸载

- -nodeps 不检查依赖性


6. 查询

rpm 包名 

-q 查询已安装的包 

-i 查询软件信息

-p 查询未安装的包信息

-a 查询所有

-l 查询包中文件的安装位置

-f 系统文件名,查询系统文件属于哪个软件包 

-R 查询软件包的依赖性


7. 校验和文件提取

rpm -V 包名 校验指定RPM包中的文件(verify)

安装完之后系统会记录当前特征,之后就可以随时比较判断文件是否被别人修改

验证标识 文件类型文件名

00 Linux 基础预习(上)_第24张图片

00 Linux 基础预习(上)_第25张图片

8. RPM包中提取文件

rpm2cpio 将包里的某个文件转换成cpio格式

cpio 创建软件档案文件和从档案中提取文件

rpm2cpio 包全名 |  cpio -idv .文件绝对路径 (去变为cpio的格式包中提取文件放在当前路径下)

00 Linux 基础预习(上)_第26张图片

YUM在线管理(redhat需要付费)

一、IP地址配置

对于CentOS7 minimal来说,网卡默认没有打开,所以需要我们的配置一下,才能ping的通yum所指定的baseurl啊~

一些查看命令:

ip: 查看配置/策略路由,设备和tunnel

systemctl status NetworkManager.service:Network Manager是一个动态网络和控制器的配置系统,用于网络设备可用时保持设备和连接开启并激活,在CentOS系统上,我们可以使用systemctl status NetworkManager.service来验证网络管理器服务的状态(是否是active)

nmcli dev status:查看网络接口状态(发现minimal的eno16777736以太接口是disconnected)

1. 打开接口:

1)vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

2)ONBOOT=no改为ONBOOT=yes 启动网卡

3)service network restart 重启网络服务

如果此时发现接口还是失联,就可以reboot一下计算机~

确保接口连接正常,此时,就可以ping一下mirrorlist.centos.org啦~


CentOS7默认是采用DHCP动态获取IP,如果想要自已配置IP,ifconfig只能是暂时的修改配置IP(如果/sbin下面没有该指令,可以通过yum install net-tools在线安装ifconfig,如果有,修改一下PATH就可以啦),在redhat系统中可以使用setup配置并重启系统来让配置永久生效,而在其他的linux系统中,我们直接去“/etc/sysconfig/network-scripts/ifcfg-相应接口”文件中修改相关的IP配置,之后通过service network restart来重启网络服务~


2. 我才不是处女座,但我就想修改一下interface的名字,eno16777736太难听了!恩,就是这样

1)vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

将NAME改名成eth0

2)cd /etc/sysconfig/network-scripts

mv ifcfg-eno16777736 ifcfg-eth0

3)vi /etc/default/grub

在GRUBCMDLINELINUX变量中添加net.ifnames=0 biosdevname=0(注意是在原来的引号内)

grub2-mkconfig -o /boot/grub2/grub.cfg使刚才GRUB配置生效更新内核参数

4)重启 reboot

5)ifconfig查看刚才的配置是否成功~

6)我们可以在/etc/udev/rules.d/70-persistent-ipoib.rules中创建规则来避免内核以自己的方式命令接口~


3. 网络yum源

vi /etc/yum.repos.d/CentOS-Base.repo(enabled默认是1)


00 Linux 基础预习(上)_第27张图片

4. 常用yum命令

-yum list 查看yum可用软件包

-yum search 关键字 搜索服务器上所有与关键字相关的包

-yum -y install 包名(-y自动回答yes)

-yum -y update 包名 自动升级所有的软件包(包括Linux内核也会更新,此时需要在本地执行相关的配置)

-yum -y remove 包名 卸载

-yum grouplist 列出所有可用的软件组列表

-yum groupinstall 软件组名 安装指定软件组

-yum groupremove 软件包组 卸载指定软件组


5. 光盘yum源的搭建

1)挂载光盘

2)让网络yum源文件失效(除了CentOS-Media.repo之外,把/etc/yum.repos.d目录下的其他文件删掉,当然不要忘了备份)

3)将baseurl=file:///...(改为自己光盘的挂载位置,注意在配置文件中,注释放在行首,不加缩进)


6. 源代码 VS RPM包

- 安装位置

源码包默认安装在/usr/local/软件名/目录下,而RPM包如下:

00 Linux 基础预习(上)_第28张图片

Note:因为源码包和RPM包安装地点不同,所以可以重复安同一个软件

- 开启服务

因为安装位置的不同,开启服务的方式也是不同的,比如对于apache:

1)/etc/rc.d/init.d/httpd start(service httpd start)

2)绝对路径 start(对于源码包)


7. 源码包的安装(源码安装在/usr/local/src/下面)

- yum -y install gcc 

安装源码包之前,我们需要安装gcc,这样才能编译源码呀。源码包中INSTALL文件是安装说明,README是软件说明

- 下载源码包

- 解压源码包 tar -xzf 文件

- 进入解压缩目录 

- ./configure --prefix=/usr/local/软件名(一般都要自己定义)

检测系统环境是否符合安装要求,把定义好的功能选项和检测系统环境的信息都写入makefile,用于后续的编辑

- make 编译(依赖makefile文件)

./configure和make过程中报错,直接用make clean清空临时文件就可以重装了

- make install 编译安装(依赖makefile文件,这个phase往目录中写入数据)


8. 脚本安装包

- 脚本安装包是源代码执行脚本,但是已经定义了好了自动安装的过程,不用我们自己手动去make什么的~


对外提供访问,就采用源码包,个人使用采用RPM包


9. 我就是想装个图像界面

yum groupinstall -y "GNOME Desktop" 

startx


Reference: 

1. 兄弟连Linux入门

2. http://jingyan.baidu.com/album/7f41ecec1b022e593d095c1e.html?picindex=5

你可能感兴趣的:(Linux基础,linux)