系统基础
以下笔记是前年刚入门的时候做的笔记,希望对你有所帮助,转载请注明出处,谢谢!。
1.linux常见的发行版本
red hat linux :是Red Hat最早发行的个人版本。
现在分为两个系列,一个是提供收费技术支持和更新的red hat enterprise linux(主要做服务器的开发),另一个是由社区开发的免费的fedora core
Fedora Core被Red Hat公司定位为新技术测试平台,如果技术稳定会应用于red hat enterprise linux,更新快但是不稳定,大约6个新版本的fedora就会有一个新版本的RHEL发布,一般3年,目前最新版本是RHEL.7.1版本。
CentOs:社区企业操作系统(community enterprise Operating system)
源自RHEL依照源代码规定发布的源代码编译而成,RHEL是商业产品,所以必须把所有LOGO改成自己的centos标识。
两者的区别在于centos并不包含封闭源代码软件,centos服务提供长期的免费升级和更新并且可以自用使用。
centos的版本号有2个部分,分别对应RHEL的主要版本和更新包,比如centos6.5对应RHEL6.0的第五次更新包上。在RHEL7.0以后命名稍有变化,例如centos7.1.1503 表示RHEL7.1版本是15年3月发布的。
Ubuntu Linux:以桌面应用为主的linux操作系统,主要针对桌面市场。以Red Hat系列版本为代表的linux发行版主要面向企业级linux的服务器市场,重点开发linux的企业版本
2.Linux下获取命令帮助
(1) help command:适用于内部命令 如help cd
(2) commang --help 或-h:适用于外部命令 如 ls -h 或 --help
(3) man command:所有用户可以使用的命令
【】:可选内容
<>:必须给出的内容
a|b|c:多选一
.... : 可以有多个
(4)Google 优先参考项目官方文档
3.基础命令
w 命令显示登录到系统的用户信息
uname命令显示操作系统的相关信息
last 命令列出目前与过去登入系统的相关用户信息
ps 命令显示当前系统正在运行的进程
top命令用于动态监控进程所占用的系统资源 , 类似于window的任务管理器
diff命令 比较不同文件的差异
gzip gunzip将一般的文件进行压缩或者解压,(gzip既可以压缩文件也可以解压文件)
tar是对文件或者目录进行打包归档,但是不进行压缩
du命令用来显示文件或者目录所占用的磁盘情况
natstat用来显示本机的网络连接 运行端口 和路由表信息
file命令 显示文件类型
traceroute 显示网络数据包传输到指定主机的路径信息
ifconfig 配置网络或者显示当前网络的接口状态(必须以root权限执行)
4.目录管理
/etc 系统管理和配置文件
/etc/rc.d/init.d 存放的是RPM包安装时设定的一些服务启动的脚本(类似于Windows注册表)
/etc/rc.d 启动的配置文件和脚本
/bin 二进制可执行文件
/sbin 超级管理命令,存放的是系统管理员的管理程序
/dev 设备特殊文件
/home 用户主目录的基点,比如用于 study的主目录就是在/home/study
/lib 标准程序设计库,又叫动态链接共享库,类似于windows的.dll文件。
/tmp 公共的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统
/lost+found这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含:
/usr/x11R6 存放x window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库根文件系统
/etc文件系统
/etc 目录包含各种系统配置文件,下面说明其中的一些。其他的你应该知道它们属于哪个程序,并阅读该程序的m a n页。许多网络配置文件也在/etc 中。
1. /etc/rc或/etc/rc.d或/etc/rc?.d
启动、或改变运行级时运行的脚本或脚本的目录。
2. /etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其
他信息。
3. /etc/fdprm
软盘参数表,用以说明不同的软盘格式。可用setfdprm 进行设置。更多的信息见s e t f d p r m
的帮助页。
4. /etc/fstab
指定启动时需要自动挂载的文件系统列表。也包括用swapon -a启用的s w a p区的信息。
5. /etc/group
类似/etc/passwd ,但说明的不是用户信息而是组的信息。包括组的各种数据。
6. /etc/inittab
init 的配置文件。
7. /etc/issue
包括用户在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。具体内容由系统管理员确定。
8. /etc/magic
“f i l e”的配置文件。包含不同文件格式的说明,“f i l e”基于它猜测文件类型。
9. /etc/motd
m o t d是message of the day的缩写,用户成功登录后自动输出。内容由系统管理员确定。常用于通告信息,如计划关机时间的警告等。
10. /etc/mtab
当前安装的文件系统列表。由脚本( s c r i t p )初始化,并由mount 命令自动更新。当需要一个当前安装的文件系统的列表时使用(例如df 命令)。
11. /etc/shadow
在安装了影子( s h a d o w )口令软件的系统上的影子口令文件。影子口令文件将/ e t c / p a s s wd文件中的加密口令移动到/ e t c / s h a d o w中,而后者只对超级用户( r o o t)可读。这使破译口令更困难,以此增加系统的安全性。
12. /etc/login.defs
l o g i n命令的配置文件。
13. /etc/printcap
类似/etc/termcap ,但针对打印机。语法不同。
14. /etc/profile 、/ e t c / c s h . l o g i n、/etc/csh.cshrc
登录或启动时b o u r n e或c shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。
15. /etc/securetty
确认安全终端,即哪个终端允许超级用户( r o o t )登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过调制解调器( m o d e m )或网络闯入系统并得到超级用户特权。
16. /etc/shells
列出可以使用的s h e l l。chsh 命令允许用户在本文件指定范围内改变登录的s h e l l。提供一台机器f t p服务的服务进程ftpd 检查用户s h e l l是否列在/etc/shells 文件中,如果不是,将不允许该用户登录。
17. /etc/termcap
终端性能数据库。说明不同的终端用什么“转义序列”控制。写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap 中查找要做的工作的正确序列。
这样,多数的程序可以在多数终端上运行。
/dev文件系统
/dev 目录包括所有设备的设备文件。设备文件用特定的约定命名,这在设备列表中说明。
设备文件在安装时由系统产生,以后可以用/dev/makedev 描述。/ d e v / m a k e d e v.local是
系统管理员为本地设备文件(或连接)写的描述文稿(即如一些非标准设备驱动不是标准
makedev 的一部分)。下面简要介绍/ d e v下一些常用文件。
1. /dev/console
系统控制台,也就是直接和系统连接的监视器。
2. /dev/hd
i d e硬盘驱动程序接口。如: / d e v / h d a指的是第一个硬盘, h a d 1则是指/ d e v / h da的第一个
分区。如系统中有其他的硬盘,则依次为/ d e v / h d b、/ d e v / h d c、. . . . ..;如有多个分区则依次为
h d a 1、h d a 2 . . . . . .
3. /dev/sd
s c s i磁盘驱动程序接口。如有系统有s c s i硬盘,就不会访问/ d e v / h a d,而会访问/ d e v / sd a。
4. /dev/fd
软驱设备驱动程序。如: / d e v / f d 0指系统的第一个软盘,也就是通常所说的a:盘,
/ d e v / f d 1指第二个软盘,. . . . . .而/ d e v / f d 1 h 1 4 40则表示访问驱动器1中的4 . 5高密盘。
5. /dev/st
s c s i磁带驱动器驱动程序。
6. /dev/tty
提供虚拟控制台支持。如: / d e v / t t y 1指的是系统的第一个虚拟控制台, / d e v / t t y2则是系统
的第二个虚拟控制台。
7. /dev/pty
提供远程登陆伪终端支持。在进行te l n e t登录时就要用到/ d e v / p t y设备。
8. /dev/ttys
计算机串行接口,对于d o s来说就是“ c o m 1”口。
9. /dev/cua
计算机串行接口,与调制解调器一起使用的设备。
10. /dev/null
“黑洞”,所有写入该设备的信息都将消失。例如:当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到/ d e v / n u l l中即可。
/usr文件系统
/usr 是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。/usr 里的
所有文件一般来自l i n u x发行版( d i s t r i b u t i o n);本地安装的程序和其他东西在/usr/local 下,因为这样可以在升级新版系统或新发行版时无须重新安装全部程序。/usr目录下的许多内容是可选的,但这些功能会使用户使用系统更加有效。/ u s r可容纳许多大型的软件包和它们的配置文件。下面列出一些重要的目录(一些不太重要的目录被省略了)。
1. /usr/x11r6
包含x wi n d o w系统的所有可执行程序、配置文件和支持文件。为简化x的开发和安装,x的文件没有集成到系统中。x wi n d o w系统是一个功能强大的图形环境,提供了大量的图形工具程序。用户如果对microsoft wi n d o w s或m a c h i n t o s h比较熟悉的话,就不会对x win d o w系统感到束手无策了。
2. /usr/x386
类似/ u s r / x 11r6 ,但是是专门给x 11 release 5的。
3. /usr/bin
集中了几乎所有用户命令,是系统的软件库。另有些命令在/bin 或/usr/local/bin 中。
4. /usr/sbin
包括了根文件系统不必要的系统管理命令,例如多数服务程序。
5. /usr/man、/ u s r / i n f o、/ u s r / d o c
这些目录包含所有手册页、g n u信息文档和各种其他文档文件。每个联机手册的“节”都有两个子目录。例如: / u s r / m a n / m a n 1中包含联机手册第一节的源码(没有格式化的原始文件),/ u s r / m a n / c a t 1包含第一节已格式化的内容。l联机手册分为以下九节:内部命令、系统调用、库函数、设备、文件格式、游戏、宏软件包、系统管理和核心程序。
6. /usr/include
包含了c语言的头文件,这些文件多以. h结尾,用来描述c语言程序中用到的数据结构、子过程和常量。为了保持一致性,这实际上应该放在/usr/lib 下,但习惯上一直沿用了这个名字。
7. /usr/lib
包含了程序或子系统的不变的数据文件,包括一些s i t e - w i d e配置文件。名字l i b来源于库(library); 编程的原始库也存在/usr/lib 里。当编译程序时,程序便会和其中的库进行连接。也有许多程序把配置文件存入其中。
8. /usr/local
本地安装的软件和其他文件放在这里。这与/ u s r很相似。用户可能会在这发现一些比较大的软件包,如t e x、e m a c s等。
/var文件系统
/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。原来/ v a r目录中有些内容是在/ u s r中的,但为了保持/ u s r目录的相对稳定,就把那些需要经常改变的目录放到/ v a r中了。每个系统是特定的,即不通过网络与其他计算机共享。下面列出一些重要的目录(一些不太重要的目录省略了)。
1. /var/catman
包括了格式化过的帮助( m a n )页。帮助页的源文件一般存在/ u s r / m a n / m a n中;有些m an页可能有预格式化的版本,存在/ u s r / m a n / c a t中。而其他的m a n页在第一次看时都需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了。(/var/catman 经常被清除,就像清除临时目录一样。)
2. /var/lib
存放系统正常运行时要改变的文件。
3. /var/local
存放/usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock 。
4. /var/lock
锁定文件。许多程序遵循在/var/lock 中产生一个锁定文件的约定,以用来支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件时,就不会再使用这个设备或文件。
5. /var/log
各种程序的日志( l o g )文件,尤其是login (/var/log/wtmp log纪录所有到系统的登录和注销) 和syslog (/var/log/messages 纪录存储所有核心和系统程序信息)。/var/log里的文件经常不确定地增长,应该定期清除。
6. /var/run
保存在下一次系统引导前有效的关于系统的信息文件。例如, /var/run/utmp 包含当前登录的用户的信息。
7. /var/spool
放置“假脱机( s p o o l )”程序的目录,如m a i l、n e w s、打印队列和其他队列工作的目录。每个不同的s p o o l在/var/spool 下有自己的子目录,例如,用户的邮箱就存放在/var/spool/mail中。
8. /var/tmp
比/tmp 允许更大的或需要存在较长时间的临时文件。注意系统管理员可能不允许/var/tmp 有很旧的文件。
/proc文件系统
/proc 文件系统并不存在于某个磁盘上,而是在内存中。这个目录用于提
供关于系统的实时信息。下面说明一些最重要的文件和目录(/proc 文件系统在proc man页中有更详
细的说明)。
1. /proc/x
关于进程x的信息目录,这一x是这一进程的标识号。每个进程在/proc 下有一个名为自
己进程号的目录。
2. /proc/cpuinfo
存放处理器( c p u )的信息,如c p u的类型、制造商、型号和性能等。
3. /proc/devices
当前运行的核心配置的设备驱动的列表。
4. /proc/dma
显示当前使用的d m a通道。
5. /proc/filesystems
核心配置的文件系统信息。
6. /proc/interrupts
显示被占用的中断信息和占用者的信息,以及被占用的数量。
7. /proc/ioports
当前使用的i / o端口。
8. /proc/kcore
系统物理内存映像。与物理内存大小完全一样,然而实际上没有占用这么多内存;它仅仅是在程序访问它时才被创建。(注意:除非你把它拷贝到什么地方,否则/proc 下没有任何东西占用任何磁盘空间。)
9. /proc/kmsg
核心输出的消息。也会被送到s y s l o g。
10. /proc/ksyms
核心符号表。
11. /proc/loadavg
系统“平均负载”; 3个没有意义的指示器指出系统当前的工作量。
12. /proc/meminfo
各种存储器使用信息,包括物理内存和交换分区( s w a p )。
13. /proc/modules
存放当前加载了哪些核心模块信息。
14. /proc/net
网络协议状态信息。
15. /proc/self
存放到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时,这将会是不同的连接。这主要便于程序得到它自己的进程目录。
16. /proc/stat
系统的不同状态,例如,系统启动后页面发生错误的次数。
17. /proc/uptime
系统启动的时间长度。
18. /proc/version
核心版本
用户管理
1.用户与组管理基础
在linux中,用户账号用户密码 和 用户组账号用户组密码 均是存放在不同的配置文件中。
用户账号和相关信息(密码除外)是放在etc/passwd配置文件中
passwd文件中字段的含义:
root : x : 0 : 0 : root : /root : /bin/bash
用户账号 用户密码 ID 用户组ID 用户名全称 用户主目录 用户所使用的shell
由于passwd不再保存密码信息,所以用x占位代表。
bin:x:1:1:bin:/bin:/sbin/nologin
某些账号(如bin)是系统自己创建的,linux进程或部分服务程序正常工作所需要用到的账户,nologin表示不能登陆
用户密码是存放在/etc/shadow中:
root:$1$bOfm5Nya$wHYyCT1dwf6Qa2VkdsQqJ/:17124:0:99999:7::: (MD5加密算法)
用户组账户信息是保存在/etc/group配置文件中
root:x:0:
第一个字段代表用户组的名称,第二个字段为x,第三个为用户组的ID号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔。
用户组的真实密码保存在/etc/gshadow配置文件中。
useradd命令添加用户
用法useradd [option] username
常用的选项为 -g 表示创建用户时指定所属的用户组, 如果不指定,系统默认创建跟用户同名的私有组。
如 useradd -g student lvlinqiang
usermod命令可以修改用户的各项属性 包括登录名,主目录,用户组,登录shell等
用法usermod [option] username
常用-l 参数 更改用户名:
usermod -l lvlinqiang llq
userdel命令可以删除用户
常用-r选项, 在删除用户名的同时删除用户的主目录。
passwd命令修改用户密码
passwd lvlinqiang (普通用户只可以修改自己的密码,只有root用户可以修改其他用户的密码)
passwd -d username (删除用户的密码,删除后不能登陆,并且只有root用户可以删除)
groupadd命令可以添加用户组
groupadd -r 则表示创建系统用户组(GID值小于500) 如果不带r,表示创建普通用户组,GID大于或等于500
newgroup命令可以切换用户组
groupmod命令可以修改用户组的属性
常用-n 对组进行重命名
groupadd -n teacher student 表示将student用户组更名为teacher组
groupdel命令可以删除用户组
另外,linux还提供了id,whoami和groups等命令,用来查看用户和组的状态。
id命令用于显示当前用户的uid。
gid和所属的用户组的列表。
whoami用于查询当前用户的名称。
groups用于产看指定用户所隶属的用户组。
sudo命令的使用流程是切换到root身份执行命令,完成后回到当前用户。前提是用通过sudo的配置文件etc/sudoers进行授权。可以理解为受限制的su。
2.普通权限
chown 命令改变文件或目录的所有者,对文件所属用户和用户组进行设置。(-R对目录下的所有文件递归的全部更改)
[root@localhost 1]# ll
-rw-r--r-- 1 root root 0 Dec 6 07:49 2
[root@localhost 1]#chown lvlinqiang:lvlinqiang 2
[root@localhost 1]# ll
-rw-r--r-- 1 lvlinqiang lvlinqiang 0 Dec 6 07:49 2
chmod命令用于改变文件或目录的访问权限。有2种方法,第一种是包含字母和操作表达式的字符设定法,另一种是包含数字的数字设定法。
[root@localhost 1]# chmod u+x,g+w 2
[root@localhost 1]# ll
total 0
-rwxrw-r-- 1 lvlinqiang lvlinqiang 0 Dec 6 07:49 2
-rw-r--r-- 1 root root 0 Dec 6 07:49 3
3.特殊权限
setuid 让普通用户运行只有root用户才能运行的程序或命令。比如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改。
chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效)
setgid 该权限只对目录有效.目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效)
sticky bit 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件.如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
rwsrw-r-- 表示有setuid标志
rwxrwsrw- 表示有setgid标志
rwxrw-rwt 表示有sticky标志
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
磁盘和文件系统
1.文件系统概述
linux系统中所有的永健设备都是通过文件的方式来表现和使用的,我们将这些文件称为设备文件。
文件系统就是操作系统和磁盘之间交互的一个桥梁,通过文件系统实现了数据合理组织和有效存取,表现在操作系统上就是对文件和目录的管理。
使用文件系统的好处:
(1)对数据的读取、管理操作变得简单。
(2)磁盘分区管理灵活
(3)支持数据容错机制,数据安全得到保障
centos6.0版本支持的是带日志的ext4文件系统。
mke2fs命令用来创建文件系统
[root@localhost ~]# mke2fs -t ext4 /dev/sda2
fsck命令用来修复损坏的文件系统(修复前需要卸载文件系统)
使用-y参数不提示自动修复
使用-t参数指定文件系统格式
2.LVM动态扩展技术
LVM(logical volume manager,逻辑卷管理器)是linux下对磁盘分区进行动态管理的一种机制。
通过将底层物理硬盘抽象封装起来,以逻辑卷形式表现给上层系统,逻辑卷大小可以动态调整,而且不会丢失现有数据,新加入的硬盘也不会改变现有上层的逻辑卷,大大提高了磁盘管理的灵活性!
有4个基本概念
PE 物理扩展
PV 物理卷
VG 卷组(空间池)
LV 逻辑卷
1.物理磁盘被格式化为PV,空间被分为一个个PE。
2.不同的PV加入同一个VG,不同的PV里的PE全部进入VG的PE池内。
3.LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
4.LV现在就可以格式化后挂载使用了
5.LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不丢失原数据
创建LVM的命令:
创建之前需要把用到的磁盘采用lvm分区方式
1.物理磁盘设备初始化物理卷
pvcreate /dev/sda /dev/sdb
2.创建卷组并将PV加入卷组中
vgcreate linuxcast /dev/sda /dev/sdb
3.基于卷组创建逻辑卷
lvcreate -n mylv -L 2G linuxcast (-n 指定逻辑卷名 -L 指定从vg中抽取的空间大小)
3.为创建好的逻辑卷创建文件系统
mkfs.ext4 /dev/linuxcast/mylv
4.将格式化的逻辑卷进行挂载使用
mount /dev/linuxcast/mylv /mnt/
拉伸LVM的命令:
1.拉伸之前查看一下VG的空间
vgs 或者 vgdisplay
2.扩充逻辑卷
lvextend -L + 10G /dev/linuxcast/mylv
3.查看扩充后逻辑卷的大小
lvs 或者 lvdisplay
4.更新文件系统
resize2fs /dev/linuxcast/mylv
5.查看更新后的文件系统
df -h
拉伸VG的命令:
1.加入新的硬盘并格式化为PV
pvcreate /dev/sdc
2.将新的PV添加到指定的卷组中
vgextend linuxcast /dev/sdc
3.查看扩充后vg的大小
vgs 或者 vgdisplay
缩小LVM的命令:
缩小是个很危险的操作,能不缩小尽量不缩小。
缩小LVM必须先挂载、然后缩小文件系统,再缩小逻辑卷LVM
1.卸载已经挂载的逻辑卷
umount /mnt/
2.缩小文件系统(会提示运行fsck检查文件系统)
resize2fs /dev/linuxcast/mylv 5G
3.缩小LV
lvreduce -L -5G /dev/linuxcast/mylv
4.查看缩小后的LV
lvs 或者 lvdisplay
mkfs.ext4 /dev/linuxcast/mylv
5.挂载
mount /dev/linuxcast/mylv /mnt
缩小卷组的命令:
如果要抽走一块硬盘(sdc),那么将一个pv从指定卷组中移除即可
vgreduce linuxcast /dev/sdc
删除LVM的命令:
1.删除LV
lvremove /dev/linuxcast/mylv
2.删除VG
vgremove linuxcast
3.删除物理卷
pvremove /dev/sdb
3.文件归档压缩工具
tar命令的常用选项:
-z 调用gzip压缩或者解压程序
-x 解压文件
-v 压缩过程中显示文件
-c 创建一个压缩文件(create)
-j 调用bzip压缩或者解压程序
-f 后面跟文件名称
1.创建一个tar归档文件示例:
[root@localhost 111]# ls
1 2 3
[root@localhost 111]# tar -cvf test.tar /usr/111/
[root@localhost 111]# ls
1 2 3 test.tar
常见压缩包格式及解压命令:
1)对于.tar结尾的文件
tar -xf all.tar
2)对于.gz结尾的文件
gzip -d all.gz
gunzip all.gz
3)对于.tgz或.tar.gz结尾的文件
tar -xzf all.tar.gz
tar -xzf all.tgz
4)对于.bz2结尾的文件
bzip2 -d all.bz2
bunzip2 all.bz2
5)对于tar.bz2结尾的文件
tar -xjf all.tar.bz2
6)对于.Z结尾的文件
uncompress all.Z
7)对于.tar.Z结尾的文件
tar -xZf all.tar.z
4.RAID原理
RAID(Redundant Arry of independent Disks)廉价磁盘冗余阵列技术是通过多磁盘并列运行来提高磁盘的存储IO性能。
RAID分为很多种,称之为RAID级别,一共有7类,常用的有以下4类:
RAID0 至少2块硬盘 无冗余能力 读写均有提升 空间利用率为n
RAID1 至少2块硬盘 冗余能力最高 写数据有影响 空间利用率为1/2
RAID5 至少3块硬盘 冗余性(1块硬盘) 读写均有影响 空间利用率n-1
RAID6 至少4块硬盘 冗余性(2块硬盘) 读写均有影响 空间利用率1/2
RAID10 将Raid0和Raid1技术结合在一起,兼顾两者的优势。在数据得到保障的同时,还能提供较强的存储性能。不过至少要求4个或以上的硬盘,也只运行一个磁盘出错。是一种高成本、高可靠性、高存储性能的三高阵列技术。
RAID实现方式:
软件RAID
通过系统功能或者RAID软件实现RAID,没有独立硬件和接口, 需要占用一定的系统资源(CPU,硬盘接口速度),并且受操作系统稳定性影响
硬件RAID
通过独立的RAID硬件卡实现,有些主板集成RAID硬件,有些需要购买独立的RAID硬件卡,硬件RAID实现不需要占用其他硬件资源,稳定性和速度都比软件RAID要好。
MDADM
每一种操作系统都有相应的RAID软件去实现,在linux中软件RAID通过mdadm这个程序来实现。
mdadm支持的RAID级别有:RAID0,RAID1,RAID4,RAID5,RAID6
mdadm可以基于多块硬盘,分区,逻辑卷创建软件RAID
创建好的软件RAID对应/dev/mdn, n为第几个RAID,如第一个创建的RAID为 /dev/md0 ,第二个为 /dev/md1
RAID的信息保存在/proc/mdstat 文件中,或通过mdadm命令查看
创建软件RAID的命令:
mdadm -C /dev/md0 -a
yes -l 0 -n 2 /dev/sdb /dev/sdc
-C 创建一个新的RAID
-a 自动创建对应设备
-l 指定要创建的RAID级别
-n 指定要创建的硬盘数量
(使用-x参数可以指定一个备份磁盘,备份磁盘一般不使用,当出现故障时,指定的备份磁盘可以自动上线 mdadm -C /dev/mdo -a yes -l 0 -n 3 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
创建好RAID后,需要创建一个配置文件:
mdadm -D --scan > /etc/mdadm.conf
创建文件系统并挂载使用:
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt (如果要开机启动就自动挂载的话需要在/etc/fstab 新建一条配置)
查看RAID信息的命令:
mdadm -D /dev/md0
cat /proc/mdstat
关闭RAID的命令:
mdadm -S /dev/md0 (关闭前需要卸载RADI)
启用RAID的命令:
mdadm -R /dev/md0
模拟磁盘故障:
mdadm /dev/md0 -f /dev/sdb (标记故障磁盘)
移除磁盘命令:
mdadm /dev/md0 -r /dev/sdb
将新的硬盘添加到RAID中:
mdadm /dev/mdo -a /dev/sdb
进程管理
1.进程的基本概念
linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用同一个linux系统,多任务是指linux可以执行多个任务(准确的说是linux才用了分时管理机制,根据任务队列中任务的优先级分配合适的时间片,由于时间很短,用户感觉不到多个任务在运行,所以在某一个时间点上,CPU只能执行一个进程。如果是多cpu多任务的操作系统下,可以多个进程同时运行)。
程序与进程的区别:
进程是由程序产生,但它并不是程序。
程序可以启用1个或多个进程。
程序只占用磁盘空间,不占用系统运行资源,而进程只占用系统内存空间。
2.进程的分类
按照功能和运行的程序分为系统进程和用户进程。两者区别是系统进程不受root用户干预,用户进程可以在用户控制下关闭。
用户进程分为3大类:
交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以允许于前台也可以运行在后台。
批处理进程:该进程是一个进程集合,负载按顺序启动其他进程。
守护进程:守护进程一直运行,在系统开机时启动,在关闭时终止。守护进程独立于控制终端并且周期性的执行某种任务或者等待处理某些发生的事件。例如httpd,crond进程
3.进程的属性
(1)进程的几种状态
可运行状态:这种状态的进程,要么正在运行,要么正准备运行
可中断的等待状态:这类进程处于阻塞状态,一旦达到某种状态就会变为运行状态。如果接收到信号可以提前唤醒进入到运行状态
不中断的等待状态:其他与上类似,但是处于这个状态的进程对信号不做响应
僵死状态:僵死进程,每个进程结束后都会处于僵死状态,等待父进程调用进而释放资源。处于该状态的进程以及结束,但是他的父进程还没有释放其系统资源。
暂停状态:表明此时的进程暂时停止,来接受某种特殊处理。
(2)进程之间的关系
进程PID是区分不同进程的唯一标识,最大ID为32768。
UID 和ID 分别表示启动这个进程的用户和用户组
所有的进程都是PID为1的init进程的后代,是所有进程的父进程,用PPID表示
4.进程的监控与管理
ps命令
ps -ef | grep httpd
pstree命令 以树状结构显示程序与进程之间的关系
语法:pstree option [PID/user]
-a 显示启动每个进程对应的完整指令,包含路径参数等
-c 显示包含子进程和父进程的进程
-n 根据进程PID排序输出,不加这个参数默认是以程序名称排序输出的
-p 显示进程的PID
-u 显示进程对用的用户名
top命令 动态实时的显示进程状态。
lsof命令(list opened file) 列举系统中已经打开文件的工具,在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
语法格式 lsof option filename
lsof abc.txt 显示开启文件abc.txt的进程
lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
--> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name (可以不止一个)
port --> 端口号 (可以不止一个)
实用命令:
lsof `which httpd` //那个进程在使用apache的可执行文件
lsof /etc/passwd //那个进程在占用/etc/passwd
lsof /dev/hda6 //那个进程在占用hda6
lsof /dev/cdrom //那个进程在占用光驱
lsof -c sendmail //查看sendmail进程的文件使用情况
lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn
lsof -p 30297 //显示那些文件被pid为30297的进程打开
lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列
lsof -u1000 //查看uid是100的用户的进程的文件使用情况
lsof -utony //查看用户tony的进程的文件使用情况
lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)
lsof -i //显示所有打开的端口
lsof -i:80 //显示所有打开80端口的进程
lsof -i -U //显示所有打开的端口和UNIX domain文件
lsof -i UDP@
lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数
pgrep 通过程序名字来查询进程ID的工具
pgrep option command
-l 列出程序名和进程ID
-o显示进程的起始ID
-n显示进程的终止ID
-f 可以匹配指定组启动的进程对应PID
-G可以匹配指定组启动的进程对应的PID
示例:
显示进程的启示ID
[root@localhost ~]# pgrep -ln httpd
2117 httpd
显示进程的终止ID
[root@localhost ~]# pgrep -lo httpd
2113 httpd
查看进程对应的所有ID
[root@localhost ~]# pgrep -f httpd
2113
2115
2116
2117
任务调度进程crond的使用:
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。它会每分钟定期检查是否有要执行的任务,如果有任务要执行,则自动执行该任务。
linux下任务调度分为系统任务调度和用户任务调度
系统任务调度:系统周期性的执行工作,比如写缓存数据到硬盘,清理日志等。
/etc/crontab 就是系统任务调度的配置文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
前4行用来配置任务运行的环境变量
第一行指定shell变量,这里用的是bash
第二行path变量指定了系统执行命令的路径
第三行MAILTO变量指定了crond的任务指crond的执行任务信息将发送给root用户
第四行HOME变量指定了在执行命令或者脚本时使用的主目录
用户任务调度:用户定期要执行的工作,比如用户数据备份,定期邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都保存在/var/spool/cron目录中。其文件名与用户名一致。
crontab工具的使用
crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。
1crontab文件一般位于/etc/下,这里面存放系统运行的的调度程序。
2每个用户都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下
CRONTAB语法及应用
1:查看当前用户的定时任务
[oracle@localhost ~]$ crontab -l
* * * * * /home/oracle/test.sh >/dev/null 2>&1
2:编辑当前用户的定时任务
[oracle@localhost ~]$ crontab -e
3:删除当前用户的定时任务
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
软件包管理
RPM是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。
RPM(Redhat package Manager)软件包管理器
语法格式 rpm -option packagename.rpm
-i install的简写,安装软件的意思
-v 显示附加信息
-V 校验已安装软件包是否和最初安装的一致
-p 验证软件包文件
-h 显示进度条
--nodeps 不检查软件包得依赖关系(加入之后可能导致软件不能使用)
--percent 以百分比的形式输出安装进度
--prefix 指定安装的路径
--replacepkgs强制重新安装已安装的软件包
安装 rpm -ivh MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
升级 rpm -uvh 文件名
删除 rpm -e 文件名 (--nodeps 不校验依赖关系 强制卸载)
查询 rpm -q
rpm -qa 列出所有安装的rpm软件
rpm -qf filename 查询目标文件所属哪一个rpm包
rpm -qi packagename 查询指定安装的rpm包软件信息
rpm -ql packagename查询指定已安装rpm包软件包含的文件
rpm -qip name.rpm查询rpm文件的信息
rpm -qlp name.rpm查询rpm文件包含的文件
验证 rpm -V packagename.rpm
YUM(全称为 Yellow dog Updater, Modified)是一个RPM的前端程序,主要目的是设计用来自动解决RPM包得依赖关系问题
1.yum具有以下特点:
自动解决依赖关系
可以对RPM进行分组,并基于组进行安装操作
引入仓库概念,支持多个仓库
配置简单
yum的基本用法
yum [options] [command] [package ...]
1.yum安装和删除rpm包(同时删除依赖性的包)
yum install -y dhcp 如安装dhcp
yum remove licq 会提示删除依赖性的包licq-gnome , licq-qt , licq-text
2.通过yum工具更新rpm包
[root@localhost ~]# yum check-update 检查可更新的rpm包
[root@localhost ~]#yum update 更新所有的rpm包
[root@localhost ~]#yum update packagename 更新指定的rpm包
[root@localhost ~]#yum upgrade 与update不同的是,连陈旧的包也会升级
3.通过yum查询RPM包信息
[root@Study ~]# yum info 显示rpm包的信息
[root@Study ~]# yum info installed 列出资源库中已经安装的所有rpm包信息
[root@Study ~]# yum list 显示所有已经安装和可以安装的程序包
[root@Study ~]# yum list package1 显示指定程序包安装情况package1
[root@Study ~]# yum groupinfo group1 显示程序组group1信息
[root@Study ~]# yum list updates 列出资源库中可以更新的rpm包信息
4.清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
创建yum仓库
yum引入了仓库的概念,仓库用来存放现有的所有RPM包,当使用yum安装一个软件的时候,如果存在依赖关系,会自动在仓库中查找依赖并安装。
仓库可以是本地的。也可以是通过http,ftp,nfs等形式使用集中的网络仓
iptables命令
iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
语法
iptables(选项)(参数)
选项
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
表名包括:
● raw:高级功能,如:网址过滤。
● mangle:数据包修改(QOS),用于实现服务质量。
● net:地址转换,用于网关路由器。
● filter:包过滤,用于防火墙规则。
规则链名包括:
● INPUT链:处理输入数据包。
● OUTPUT链:处理输出数据包。
● PORWARD链:处理转发数据包。
● PREROUTING链:用于目标地址转换(DNAT)。
● POSTOUTING链:用于源地址转换(SNAT)。
动作包括:
● accept:接收数据包。
● DROP:丢弃数据包。
● REDIRECT:重定向、映射、透明代理。
● SNAT:源地址转换。
● DNAT:目标地址转换。
● MASQUERADE:IP伪装(NAT),用于ADSL。
● LOG:日志记录。
实例
清除已有iptables规则
iptables -F
iptables -X
iptables -Z
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
删除已添加的iptables规则
将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8
网络配置
Linux系统的网络地址配置分为两种方式:
暂时的网络配置:利用ifconfig等命令配置的网络信息,会立即生效,但重启网络服务和系统会失效。
永久的网络配置:通过修改系统内的网络配置文件进行的修改,不会立即生效,需要重启网络服务或者系统会生效,并且会永久性的生效。
RHEL/centos配置文件/etc/sysconfig/network-scripts/ifcfg-eth0详解:
DEVICE=eth0 网卡设备名称
ONBOOT=yes 是否启动
TYPE=Ethernet 指定网卡类型为以太网
HWADDR=00:0C:29:45:EA:2D MAC地址
BOOTPROTO=static 启动协议
IPADDR=192.168.0.10 IP地址
NETMASK=255.255.255.0 子网掩码
GATWAY=192.168.0.1 网关
DNS1=61.128.128.68 dns地址
设置完毕后重启网卡 service network restart
ifconfig 查看本地网络接口信息
ifconfig eth0 查看eth0网卡的信息
ifconfig -a 查看所有信息
route命令
[root@www ~]# route 查看本机路由信息
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 1 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
[root@www ~]# route -n 以数字方式查看路由信息
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
如何添加一条静态路由
IP命令
是iproute2软件包内的一个命令,功能比ifconfig更强大,可以对系统配置IP和路由信息。
ip addr:配置网络地址
ip addr show:查看网络信息
ip addr add IP dev ethX :配置IP地址
(此命令配置的网卡信息利用ifconfig查看不到,需要利用ip addr show查看)
您还未添加分享代码,请到主题选项中,添加百度分享代码!
您可以选择一种方式赞助本站
支付宝转账赞助
支付宝扫一扫赞助
微信钱包扫描赞助