Linux
1 Linux系统管理
一、 文件系统基础
1. 文件基本概念
A.文件与文件名
B.文件类型
a.普通文件 b.文本文件 c.二进制文件
d.目录文件 e.设备文件
2. 目录
A.树型目录结构 (分为:根目录与子目录)
B.工作目录与用户主目录
a.根目录 /
b.子目录
/bin 重要可执行文件
/boot 启动内核文件(最好占一个分区)
/etc 存放配置文件(最好占一个分区)
/home 普通用户宿主目录(推荐占一个分区)
/usr 存放应用程序(推荐占一个分区)
/root 超户宿主目录(推荐占一个分区)
/dev 存放外设文件
/lib 链接库文件
/mnt 挂载软驱/光驱/U盘等
/sbin 用户root使用命令存放处
/tftpboot 文件传输协议
/tmp 临时文件存放
/var 存放系统记录文件
C.查看环境变量
echo $PATH
D.路径概念
a.相对路径 b.绝对路径
3. SSH ---安全联机
A.用于LINUX主机与LINUX主机互联
B.用于WINDOWS主机与LINUX主机互联
4. GRUB明文加密的设置
A.开机进入GRUB,按A键,按空格后,再输入init 1进入单用户模式,用passwd修改root用户口令,再输入init 3进入文本模式测试,刚才改过的口令。
B.给GRUB加密
a.进入系统,找到/boot/grub/grub.conf文件
b.使用vi编辑器打开
c.找到Title …所在行,在前面加一行:password 口令
存盘退出。重启后,再从GRUB下进入单用户时,将要求输入密码!
思考:把password 口令,加到“Title ….”下一行?
补充:LINUX系统启动模式
A.init 0 关机 B.init 1 单用户
C.init 2 多用户 D.init 3 文本
E.init 4 未分配 F.init 5 图形
G.init 6 重启
二、 文件/目录常用命令
1. login/logout(登录/登出,用户必须设口令才能登录)
2. reboot/init 6 重启系统
3. shutdown/poweroff/init 0 关机
4. ls 显示
ls –l 显示文件夹内文件详细信息,也可用ll
ls –a 显示文件夹内隐藏文件
ls ~ 显示用户宿主目录
5.man 查看命令帮助文档
man ls
6.touch 创建文件
touch a.txt
7.cd 切换目录
cd .. 退出当前目录回到上一级目录
cd / 切换到根目录
cd /root/xx 切换到一个子目录下
cd ~ 切换到用户的宿主目录
8.mkdir 新建目录
9.rmdir 删除一个空目录
10.cp 拷贝
cp /root/a.txt /soft/ab 拷贝一个文件到一个目录中
cp /root/*.mp3 /soft/ab 拷贝扩展名为mp3的所有文件
cp –r /root /soft/ab 拷贝一个目录到另一个目录
cp –r –f /root /soft/ab 拷贝到另一个目录,同时删除前面已经存在的目录
11.rm 删除文件/目录
rm –f 删除文件时不提示警告
rm –r 递归删除,常用于删除目录
如:rm –fr /root/xx 表示删除xx目录中所有文件与目录不提示
12.cat 查看文件内容
如:cat /etc/ab/x.txt 查看文件x.txt中内容
13.more 分屏显示
ls /etc |more 让/etc中文件与目录分屏显示
14.date 查看/修改日期和时间
date –s 月/日/四位年
date –s 时/分/秒
如:date –s 16:12:10.2
15.less查看多内容的文件
如:less /etc/squid/squid.conf 表示看squid.conf中内容分屏看.
16.pwd 显示当前所在位置
17.grep 过滤
如:rpm –qa|grep httpd 查看系统中是否装了apache软件
18.> 导出文件
如:ls /etc > /root/a.txt 把/etc下所有文件名存入a.txt
19.find 查找文件
如:find –name “*.mp3” 查找当前目录中所有mp3文件
20.uptime 显示系统运行时长
21.df 显示磁盘占有空间
df –T 显示磁盘占有空间与文件系统类型
22.cal 显示日历
23.mv 移动文件/目录或重命名
如:mv /root/abc.jpg /etc/kk
如:mv at.doc abc.doc
如:mv kk.zip .kk.zip 表示隐藏文件
如:mv .kk.zip kk.zip 去除隐藏
24.tree 显示树状目录
25.du 看磁盘使用情况
26.mkfs 创建文件系统 如:mkfs –t ext2 /mnt/floppy格式化软盘
三、 VI 编辑器使用
1.是unix中vim增强版本
2.三种模式
A.命令模式(光标移动,字符删除等操作)
B.输入模式(insert下写文件内容等操作)
C.末行模式(保存退出,查找字符等操作)
3.命令模式常用命令
A.命令dd/ndd整行删除.如:5dd表示删除5行.
B.命令yy/nyy整行复制.如:4yy表示从当前行起复制4行.
C.命令p(小写)/P(大写)粘贴.p在光标所在行后,P在前粘贴.
D.命令/查找字符命令.如:/free表示在文件中找free字符.
E.命令.表示重复上一条命令.
F.命令u表示撤销
G.命令:q退出不保存; :wq退出保存; !q强制退出不保存.
H.命令:g/旧字符/s//新字符/g 表示文件中所有字符替换.
如: :g/root/s//abc/g 表示把文件中root用abc替换.
I.命令:g/要删除的字符/s///g 表示删除文件中字符.
如: :g/abc/s//abc/g 表示把文件中abc字符全部删除.
J.命令:s/旧字符/新字符/g 表示文件中当前行字符替换.
如: :s/abc/bcd/g 表示把文件中光标所在行的abc用bcd替换.
K.命令 vi –o 文件1 文件2 表示同时显示两个文件.
如: vi –o a.txt b.txt (用ctrl+w切换两个文件窗口)
L.命令 diff 文件1 文件2 表示比较两个文件的区别
M.pagedown /pageup 翻页显示文件中内容
N. ctrl +d 向前翻半屏
ctrl +u 向后翻半屏
ctrl +f 向前翻一屏
ctrl +b 向后翻一屏
小技巧:去除LINUX中乱码
方法:修改/etc/sysconfig/i18n,注释Zh_CN行,加一行LANG=“en_US”
小技巧:修改LINUX启动模式
方法:修改/etc/inittab文件,把“id:5:initdefault”中数字修改.
四、 Shell通配符
l Shell常用通配符
符号 |
意义 |
* |
代表『 0 个到无穷多个』任意字符 |
? |
代表『一定有一个』任意字符 |
[ ] |
同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』 |
[ - ] |
若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的! |
[^ ] |
若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。 |
l shell元字符(特殊字符 Meta)
符号 |
内容 |
# |
批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行 |
\ |
跳脱符号:将『特殊字符或通配符』还原成一般字符 |
| |
管线 (pipe):分隔两个管线命令的界定(后两节介绍); |
; |
连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同) |
~ |
用户的家目录 |
$ |
取用变量前导符:亦即是变量之前需要加的变量取代值:$param =${param} |
& |
工作控制 (job control):将命令变成背景下工作 |
! |
逻辑运算意义上的『非』 not 的意思! |
/ |
目录符号:路径分隔的符号 |
>, >> |
数据流重导向:输出导向,分别是『取代』与『累加』 |
<, << |
数据流重导向:输入导向 (这两个留待下节介绍) |
' ' |
单引号,不具有变量置换的功能 |
" " |
具有变量置换的功能! |
` ` |
两个『 ` 』中间为可以先运行的命令,等价于 $( ) |
( ) |
在中间为子 shell 的起始与结束 |
{ } |
在中间为命令区块的组合! |
&& |
在前一个命令结束时,若返回值为 true,继续执行下一个命令。 * |
|| |
在前一个命令结束时,若返回值为 false,继续执行下一个命令。 * |
l shell转义符
字符 |
说明 |
‘’(单引号) |
又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。 |
“”(双引号) |
又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替 |
\(反斜杠) |
又叫转义,去除其后紧跟的元字符或通配符的特殊意义。 |
五、 正则表达式
1. 基础正则表达式元字符
特殊匹配模式 |
|
[:alnum:] |
字母与数字字符 |
[:alpha:] |
字母 |
[:ascii:] |
ASCII字符 |
[:blank:] |
空格或制表符 |
[:cntrl:] |
ASCII控制字符 |
[:digit:] |
数字 |
[:graph:] |
非控制、空格字符 |
[:lower:] |
小写字母 |
[:print:] |
可打印字符 |
[:punct:] |
标点符号字符 |
[:space:] |
空白字符,包括垂直制表符 |
[:upper:] |
大写字母 |
[:xdigit:] |
十六进制数字 |
l awk sed grep egrep都支持
元字符 |
功能 |
示例 |
示例的匹配对象 |
^ |
行首定位符 |
/^love/ |
匹配所有以love开头的行 |
$ |
行尾定位符 |
/love$/ |
匹配所有以love结尾的行 |
. |
匹配除换行符外的单个字符 |
/l..e/ |
匹配包含字母l、后跟两个任意字符、再跟字母e的行 |
* |
匹配零个或多个前导字符 |
/ *love/ |
匹配在零个或多个空格紧跟着模式love的行 |
[] |
匹配指定字符组内的任一字符 |
[xyz] |
将会匹配字符x, y, 或z. |
[c-n] |
匹配字符c到字符n之间的任意一个字符. |
||
[B-Pk-y] |
匹配从B到P, 或者从k到y之间的任意一个字符. |
||
[a-z0-9] |
匹配任意小写字母或数字. |
||
[^b-d] |
将会匹配范围在b到d之外的任意一个字符. 这就是使用^对字符集取反的一个实例. |
||
[Yy][Ee][Ss] |
能够匹配yes, Yes, YES, yEs |
||
/[Ll]ove/ |
匹配包含love和Love的行 |
||
Pattern\{n\} |
匹配其那面patern出现的次数,n为次数 |
|
|
Pattern\{n,\} |
至少出现n次 |
|
|
Pattern\{n,m\} |
n<= 次数 <=m |
|
|
l grep egrep sed 支持
\< |
词首定位符 |
/\<love/ |
匹配包含以love开头单词的行 |
\> |
词尾定位符 |
/love\>/ |
匹配包含以love结尾单词的行 |
l sed awk 支持
& |
保存查找串以便在替换串中引用 |
s/love/**&**/ |
符号&代表查找串。字符串love将替换前后各加了两个星号的引用,即love变成**love** |
2. 扩展正则表达式元字符
l egrep awk支持,sed 与grep在使用这些原字符时要在元字符前加上反斜杠
元字符 |
功能 |
示例 |
示例的匹配对象 |
+ |
匹配一个或多个前导符 |
[a–z]+ove
|
匹配一个或多个小写字母,后面跟着ove,如approve, love, behoove |
? |
匹配零个或一个前导符 |
lo?ve |
匹配lve或这love |
a|b |
匹配a或b |
love|hate |
匹配love或者hate |
(…) |
匹配一组字符 |
love(able|ly) (ov)+ |
匹配loveable或者lovely. 匹配一个或多个ov |
l grep egrep sed 支持,且egrep在使用的时候不必加反斜杠
\(…\) |
保存已匹配的字符 |
s/\(love\)able/\1er/ |
标记元字符之间的模式,并将其保存为标签1,之后可以用\1来引用它。最多可定义9个标签,从左边开始编号,最左边的是第一个。在这个示例中,love被保存在寄存器1里,之后被替换串引用,结果loveable被替换为lover |
x\{m\} |
连续m个x |
/o\{5\}/ |
分别匹配出现连续5个字母o、至少5个连续的o、或5—10个连续的o的行 |
x\{m,\} |
至少m个x |
/o\{5,\}/ |
|
x\{m,n\} |
至少m个、但不超过n个x |
/o\{5,10\}/ |
注意:这些正则表达式元字符中的某些字符,对于shell来说也有特殊意义,shell会对他们进行解释,因此在使用的时候,要注意对这样的元字符进行转义。
六、 通配符和正则表达式区别
再次强调:正规表示法的特殊字符与一般在shell命令行中的通配符并不相同。
字符 |
Shell 通配符含义 |
RE正则表达式含义 |
* |
匹配0到任意个字符 |
n个前导RE字符 n>=0(组合态) |
. |
无特殊含义 |
任意一个字符 |
? |
1个任意字符 |
0或1个前导RE字符(组合态) |
| |
管道 |
逻辑表达式或 or |
[xyz] |
xyz中任意一个字符 |
xyz中任意一个字符(和shell通配符含义一样) |
[a-z] [0-9] |
a-z 0-9 之间任意一个字符 |
同前 |
[^xyz] [^a-z] |
^取补作用 |
同前 |
{a,b,c} |
大括号变量扩展:{a,b,c}.txt 会被展开为:a.txt b.txt c.txt |
需要转义:\{m,n\} ,具体参照上方描述 |
\ |
转义字符 |
转义字符 |
举例来说,不支持正规表示法的 ls 这个工具中,若我们使用 『ls -l * 』 代表的是任意档名的文件,而 『ls -l a* 』代表的是以 a 为开头的任何档名的文件, 但在正规表示法中,我们要找到含有以 a 为开头的文件,则必须要这样:(需搭配支持正规表示法的工具)
ls | grep -n '^a.*'
七、 LINUX中文件权限管理
1.图例
drwx-rw-rx 2 root root 13 Apr…
权限标志 所有者 所属组 文件或目录相关信息
权限说明: 第一栏:区分目录/文件(d表目录;-表普通文件;l表连接文件
b或c表设备文件;s或p表管道结构)
第二栏:文件属主Owner
第三栏:文件属组Group
第四栏:其它用户对目录/文件权限Others
注:其中2表示有几条路径到达此文件.
2.设置权限
格式:chmod u+rwx,g+rwx,o+rwx 文件
可以用数字表示,写权限(修改和删除)为2;读权限为4;运行权限为1.
如:chmod u+rwx,g+rx,o+rx a.txt
或:chmod 755 a.txt
3.文件名颜色
A.绿色(可执行文件) B.白色(普通文件) C.深蓝色(目录)
D.天蓝色(链接文件) E.黄色(设备文件) F.红色(软件包)
例1:
touch a.txt 白色
chmod 775 a.txt 绿色
ln /etc/abc.txt 345 天蓝色(建立345为/etc/abc.txt快捷方式)
例2:
vi a
写入netstat –nat
chmod 777 a
./a
本例为编写的一个脚本(可执行文件)
4.更改文件属主
格式:chmod 新用户名 目录/文件
例如:
chown zhangs /etc/a.txt
表示修改/etc/a.txt属主为zhangs
ll /etc
查看属主变为了zhangs
5.更改文件属组
格式:chgrp 新组名 目录/文件
例如:
chgrp zhangs /etc/a.txt
表示修改/etc/a.txt属组为zhangs
ll /etc
查看属组变为了zhangs
6.几个重要的命令补充
(1)whoami 显示当前以哪个用户登录
(2)w 显示当前登录用户信息
(3)who 显示所有已登录用户信息
(4)last 查看曾经登录此系统用户和时间
(5)finger 查找并显示用户信
如:finger zhangs表示查看zhangs用户信息
(6)su 切换用户
(7)ntsysv 启动/关闭系统中的服务
(8)setup 设置系统运行参数
八、 LINUX中用户账户管理
1.查看LINUX中用户
A.用户存放文件/etc/passwd 可通过cat /etc/passwd |more查看
B.格式
a : x : 501 : 501 ::/home/a : /bin/bash
用户名 口令 UID GID 主目录 登录shell(桌面)
注:UID 用户账户识别码 GID 组账户识别码
技巧:如果把普通用户的UID和GID改成与root用户的一样,那么此用户就
变成了管理员.
C.查看账户的有效期限(/etc/shadow)
a : $1$5xadadsad: 12867 :0: 99999:7:
用户 口令 改动时间 相隔天数 过期时间
D.查看账号所属组(/etc/group)
a : x : 503 : zhangs
组名 口令 GID 组中成员
注:LINUX中每当建立一个用户时,同时也建立一个同名的组,但是此用
户默认是不加入到此组中.
2.用户建立与删除等操作
(1)useradd /adduser 用户名 表示新建用户
(2)passwd 用户名 表示修改用户口令
(3)userdel 用户名 表示删除用户
(4)usermod –l 新用户名 旧用户名 表示修改用户名称
(5)usermod –L 用户名 表示锁定用户名
(6)usermod –U 用户名 表示解锁用户名
3.组的建立与管理
(1)groupadd 组名 表示新建组
(2)groupdel 组名 表示删除组
(3)groupmod 新组名 旧组名 表示修改组名称
(5)gpasswd –a 用户名 组名 表示把用户加入到组中
(6)gpasswd –d 用户名 组名 表示把用户从组中删除
九、 修改LINUX下网络配置
1.修改IP地址
(1)ifconfig eth0 ip_address netmask net_mask
表示临时修改IP.系统重启将丢失.
如: ifconfig eth0 1.1.1.2 netmask 255.0.0.0
(2)/etc/sysconfig/network-scripts/ifcfg-eth0
表示IP配置文件,可以永久修改,但是改完后需重启network服务
(3)setup命令修改,改完后需重启network服务
(4)一个网卡绑定多个IP
如:ifconfig eth0:1 1.1.1.3 netmask 255.0.0.0
此方法也是临时修改.
如:复制配置文件ifcfg-eth0为ifcfg-eth0:1
此方法为永久修改
2.修改DNS地址
找到/etc/resolv.conf在其中加上:nameserver 218.104.78.3
3.ping/nslookup命令
4.scp 用于LINUX主机之间互联.
A.在LINUX SERVER上启动SSH服务
B.在客户机上使用
scp LINUXSERVER IP:/目录/文件 /本地目录
表示把服务器上某一文件复制到本地目录
scp –r LINUXSERVER IP:/目录 /本地目录
表示把服务器上某一目录中所有文件与目录复制到本地目录中
ssh LINUXSERVER IP 登录到服务器上查看
5.关闭网卡
Ifconfig eth0 down
6.启用网卡
Ifconfig eth0 up
7.修改网卡物理地址
Ifconfig eth0 hw ether 00:E0:23:45:34:A1
8.重启网络服务
service network restart
十、 LINUX下系统软件包管理
1.tar包
命令:tar
-c 创建一个新tar包 –v 显示运行过程信息 -f 指定文件名
-x 解开一个tar包 –z 调用zip –t 查看压缩包内容 -r 添加文件
例1:建立一个tar包
tar cvf aa.tar aa.txt (把aa.txt压缩到文件aa.tar中)
例2:解压一个tar包
tar xvf aa.tar
例3:建立一个tar.gz包
tar cvfz aa.tar.gz aa.txt
2.zip包
解压一个zip包:unzip a.zip
解压一个gz包:gzip –d a.gz
3.tar.gz包
解压一个tar.gz包:tar xvzf abc.tar.gz
解压一个.tgz包:gunzip abc.tgz
解压一个tar.z包:tar xvzf a.tar.z
解压一个bz2包:bunzip2 b.txt.bz2
4.rpm包
(1)命名规则
abc-1.3.20-16.i386.rpm
注:1.3.20表示版本号
16表示发行次数
i386表示适用平台为intel x86
常见还有:
sparc 指sparc 平台
alpha 指Alpha平台
src 指软件源代码
(2)常用命令参数
如果是:-i 表示安装指定的软件包
-v 显示安装时详细信息
-h 显示安装进程
例1:安装一个ab123.i386.rpm的软件包
rpm –ivh ab123.i386.rpm
例2:升级ftp软件包
rpm –U vsftpd
例3:删除一个软件包
rpm –e ab123.i386.rpm
例4:强行删除一个软件包
rpm –nodeps vsftpd