Linux总结
撰稿作者:清村常争 2016年5月18日星期三
参考文献:http://www.runoob.com/linux/linux-tutorial.html
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,也是一个性能稳定的多用户网络操作系统。知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora等
通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。
虚拟机:付费VMware或开源VM VirtualBox
系统启动过程
(1)内核的引导;
(2)运行init;
(3)系统初始化;
(4)建立终端;
(5)用户登录系统。
可通过dmesg命令 或 /var/log/dmesg文件下查看系统启动过程。
init,运行级别:
0关机
1单用户模式
2不带网络的多用户模式
3多用户模式
4未使用
5图形化模式
6重新启动
可以通过修改/etc/inittab文件改变启动模式,或修改/etc/init目录下某些指定文件来修改启动。每个级别对应的启动服务保存在/etc/rc.d/rc[0123456].d中。
单用户模式进入后passwd命令修改ROOT密码。再可使用grub-md5-crypt对密码进行加密,后将加密的密码复制到/boot/grub/grub.conf文件中(passwd --md5 加密密码),可以对单用户模式设置密码。
系统目录结构
/bin:bin是Binary的缩写, 存放着最经常使用的命令。
/boot:是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:Device缩写, 存放的是Linux的外部设备,访问设备和访问文件的方式是相同的。
/etc:用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,每个用户都有一个自己的目录,该目录名是以用户的账号命名的。
/lib:存放着系统最基本的动态连接共享库。
/lost+found:一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/medialinux:系统会自动识别一些设备,如U盘等,把识别的设备挂载到这个目录下。
/mnt:用于临时挂载别的文件系统,如挂载光驱,然后进入该目录就可查看光驱内容了。
/opt:这是给主机额外安装大型软件所摆放的目录。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:是Redhat/CentOS所特有,是一个安全机制,类似于windows的防火墙。
/srv:存放一些服务启动之后需要提取的数据。
/sys:安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。
/usr:存放用户的很多一般的应用程序和文件,类似与windows下的programfiles目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:存放着不断扩充着的东西,习惯将那些经常被修改的目录放在该目录下,如日志文件。
文件基本属性:ls -l
(1)文件类型
d :目录;
- :文件;
l :链接文档;
b :可供储存的接口设备;
c :串行端口设备,如键盘、鼠标。
(2)所属权限
所属用户:该文件的所有者拥有该文件的权限;
所属组中的用户:所有者的同组用户拥有该文件的权限;
其他用户:组外用户拥有该文件的权限。
[r ]代表可读(read)、[ w ]代表可写(write)、[ x]代表可执行(execute)、[ - ]表示没有权限。
(3)文件属于特定的所有者,用户可属于一个或多个组。
更改文件属组:
chgrp[-R] 属组名 文件名
[-R ]:递归修改文件属组,即该目录下所以文件都修改属性。
更改文件属主、属组:
chown[–R] 属主名 文件名
chown[-R] 属主名:属组名 文件名
更改文件9个属性:
方法一:数字修改
chmod[-R] xyz 文件或目录
xyz分别是三组r+w+x累加值,r:4、w:2、x:1,无权限不用加入。如755
方法二:符号修改,user、group、others、all
chmod |
|
u g o a |
+(加入) -(除去) =(设定) |
r w x |
文件或目录 |
如:chmod go+rw hello.c
(4)默认权限:umask,第一位是特殊权限,后3位是普通权限。
特殊权限: suid让本用户做原本没有权限做的事(如本用户可以执行属于其他用户的应用程序);sgid新建的文件保留上一级文件的所属组;sticky保护本用户在该目录下创建的文件不被其他用户删除。
设置suid:chmod u+s LinuxData
设置sgid:chmod g+s LinuxData
设置sticky:chmod o+t LinuxData
文件与目录管理
(1)处理目录命令
绝对路径:cd /home/changqing/Desktop
相对路径:cd ./Desktop,相对于当前目录下的路径
ls [-ald] 目录名称:列出目录 –a:全部文件;-l:长数据;-d:仅目录
cd [路径]:切换目录 ..:上一级目录;~:家目录;-:上一次工作目录
pwd [-P]:显示当前目录 -P:显示确实路径,而非link目录
mkdir [-mp] [权限] 目录名称:创建新目录 -m:配置文件权限;-p:创建多层目录
rmdir [-p] 目录名称:删除空的目录 -p:删除多层目录,后续跟具体路径
cp [-adfilprsu] 来源档目标档:复制文件或目录 -i:询问操作;
-p:连同属性一起复;-r:递回(目录复制);-v:显示详细信息
rm [-fir] 文件或目录:删除文件或目录 -i:询问操作; -f:强制
mv [-fiu] 文件或目录:移动文件或目录、重命名 -i:询问操作
man:帮助指令
(2)文件内容查看
touch 文件:创建空白文件或更新已存在文件
file 文件:查看文件类型
cat [-AbEnTv] 文件:由第一行开始显示文件内容
tac 文件:从最后一行开始显示,tac 是 cat 的倒著写
nl [-bnw] 文件:显示的时候,顺道输出行号。
more 文件:显示文件内容 翻页操作:空格键、enter键、/字串、:f、q、b
less 文件:显示文件内容 翻页操作:空格键、pagedown、pageup等
head [-n number] 文件:只看开头几行 number为行数
tail [-n number] 文件:只看结尾几行 -f:追踪文件更新,命令不退出,持续显示新内容
用户与用户组管理
每个用户属于一个主组,最多可属于31个附属组。UserID、GroupID。root用户ID为0,系统用户ID为1-499,普通用户500以上。
id 用户名:查看用户信息,whoami显示当前用户、who显示有哪些用户已登入、w显示有哪些用户已登入且在干什么。
(1)用户管理
添加账号:useradd 选项 用户名 需后期添加密码才可使用
删除账号:userdel 选项 用户名
修改账号:usermod 选项 用户名
密码管理:passwd 选项 用户名
(2)用户组管理
添加用户组:groupadd 选项 用户组
删除用户组:groupdel 用户组
修改用户组属性:groupmod 选项 用户组
切换用户组:newgrp 用户组
(3)与用户账户相关的系统文件
/etc/passwd:记录着所有用户基本属性
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow:与上个文件自动产生,记录用户密码(加密的)
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group:用户组的所有信息
组名:口令:组标识号:组内用户列表
(4)批量添加用户
1)先编辑一个文本用户文件;
2)以root身份执行newusers;
3)以root身份执行pwunconv;
4)编辑每个用户的密码对照文件;
5)以root身份执行chpasswd
6)pwconv,确定密码经编码写入/etc/passwd的密码栏
磁盘管理
Linux中磁盘hd或sd放在/dev中,每一个物理磁盘以abc等字母编号,每个磁盘上的分区以123数字编号,如/dev/sda3。分区机制有MBR(传统的BIOS型PC机,最大2T)和GPT(较新的UEFI型硬件设备,超过2T)。
MBR分区最多可以创建4个主分区,如需创建更多分区,则需创建扩展分区,一个扩展分区会占用一个主分区,且扩展分区不能直接使用,需要创建逻辑分区后使用。
GPT分区向下兼容MBR,必须使用64bit系统。
磁盘结构:heads磁头、sectors扇区、cylinders柱面等
步骤:主要看粗体命令
(1)fdisk:用于磁盘分区,只用于MBR机制的分区、且只有root用户可执行
fdisk -l:列出所有安装的磁盘及其分区信息
fdisk /dev/sda:sda指的是需要被分区的磁盘,后提示键入m,n添加新区,e扩展分区/p主分区,输入起始位置与大小(如+2G),最后键入w写入磁盘。分区后需使用partprobe命令让内核更新分区信息,否则需要重启才能识别新分区。
磁盘创建分区后不能被操作系统直接使用,需创建文件系统。
(2)操作系统通过文件系统管理文件及数据,文件系统中会带有日志,增强了系统的稳定性,创建文件系统的过程称为格式化。没有文件系统的设备称为裸(raw)设备,windows下文件系统由NTFS,Linux下有ext3、ext4。
mke2fs –c -t ext4 /dev/sda1:在/dev/sda1上创建ext4文件系统。-t ext4创建ext4文件系统,-c检测设备是否有坏点。或者也可使用mkfs.ext4 /dev/sda1创建文件系统。
dumpe2fs /dev/sda1:查看分区的文件系统信息。
e2label /dev/sda1 LINUXDATA:设置sda1的系统标签为LINUXDATA。
e2label /dev/sda1:显示sda1的系统标签。
fsck /dev/sda1:检查并修复损坏的文件系统,但是磁盘必须先卸载再检查。-y参数不提示而直接进行修复。当文件系统损坏较严重,需使用-t ext4参数指定文件系统类型。fsck会将文件系统无记录的损坏数据放入挂载目录下的lost+found目录。
(3)磁盘或分区创建好文件系统后,需要挂载到一个目录下才能够使用。
mount /dev/sda1 /mnt/:挂载/dev/sda1分区到/mnt/目录下。mount显示当前挂载信息。-t指定文件系统类型。-o指定挂载选项:ro只读、rw读写、remount重新挂载、sync不使用缓存,而对所有操作直接写入磁盘,保证数据写入的成功率。
umount /dev/sda1 == umount /mnt/:卸载磁盘,相当于windows中的弹出。若系统无法卸载,可通过fuser –m /mnt/参看使用文件系统的进程,losf /mnt/参看正在被使用的文件。
对文件系统的任何操作,除了读写数据,都需要先卸载后操作。
设置磁盘自动挂载:配置/etc/fstab文件定义自动挂载,fstab每一行代表一个挂载配置,格式是“需要挂载的设备 挂载点 文件系统 挂载选项 dump、fsck相关选项”,如
/dev/sda1 /mnt ext4 defaults 0 0 或 hLABEL=LINUXDATA /mnt ext4 defaults 0 0,最后mount –a命令挂载所有fstab中定义的自动挂载项,或reboot重启系统。
df:列出文件系统的整体磁盘使用量
du:检查磁盘空间使用量
获取帮助:粗体为常用方法
(1)命令名 --help或–h:简单列出内容。
(2)man 命令名:详细列出内容,期间可键入/关键字,查看相关内容。
man数字 命令名:列出下表相关的文件。
部分 |
类型 |
1 |
用户命令 |
2 |
内核系统调用 |
3 |
库函数 |
4 |
特殊文件和设备 |
5 |
文件格式和规范 |
6 |
游戏 |
7 |
规范、标准和其他页面 |
8 |
系统管理命令 |
9 |
Linux内核API |
(3)man –k 关键字:查询包含该关键字的文档。
(4)info与man类似,但提供更为详细的信息。
(5)/usr/share/doc目录下存放详细的文档。
(6)google搜索
网络基本配置
不同网络间通信需要网关/路由器,每一个网址,即域名,对应于一个IP地址,DNS就是用于解析域名的。www.baidu.com,其中www为主机名,baidu为域名,com为类型。
ifconfig -a:查看所有接口 ifconfig eth0:查看特定的接口
ifup eth0:启用一个接口 ifdown eth0:禁用一个接口
setup:配置网络信息,之后通过ifup启动网络。IP -> 子网掩码 -> DNS -> 网关。
网络相关配置文件:
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件:/etc/resolv.conf
主机名配置文件:/etc/sysconfig/network
静态主机名配置文件:/etc/hosts
网络测试命令:
测试网络连通性:ping 192.168.1.1 或 ping www.baidu.com
测试DNS解析:host www.baidu.com 或 dig www.baidu.com
显示路由表:ip route
追踪到达目标地址的网络路径:traceroute www.baidu.com
测试网络质量:mtr www.baidu.com
管道、重定向
不要重复发明轮子。
多命令协作通过管道和重定向实现:管道,完成命令的组合;重定义:将输出信息或文件输入到文件。
Shell的数据流:其中STDOUT只输出正确的输出,而STDERR输出错误的信息。
名称 |
说明 |
编号 |
默认 |
STDIN |
标准输入 |
0 |
键盘 |
STDOUT |
标准输出 |
1 |
终端 |
STDERR |
标准错误 |
2 |
终端 |
分类 |
关键字 |
定义 |
例子 |
说明 |
重定向 |
> |
将STDOUT重定向到文件(覆盖方式) |
echo hello > out1 |
将hello输出到out1文件 |
>> |
将STDOUT重定向到文件(追加方式) |
echo hello>> out2 |
将hello输出到out2文件 |
|
2> |
将STDERR重定向到文件(覆盖方式) |
ls nothere 2> out3 |
将错误输出到out3文件 |
|
2>&1 |
将STDOUT和STDERR结合重定向到文件(覆盖) |
ls nothere > o 2>&1 |
将输出与错误输出到out文件 |
|
< |
重定向STDIN (从后到前执行) |
grep Music < /home/a |
将/home/a文件输入到grep命令中 |
|
管道 |
| |
将一个命令的STDOUT作为另一个命令的STDIN |
ls –l | grep Music |
ls的命令结果输入给grep命令 |
文本处理工具
文件浏览:cat、more、less、head、tail等命令
基于关键字的搜索文本:grep[-xx] changqing /etc/passwd 或 find / -user changqing | grep Video。-i搜索中忽略大小写,-n显示行数,-v输出不带关键字的行,-Ax输出包含结果所在行之后的指定x行数,-Bx输出包含结果所在行之前的指定x行数。
区别:grep在文件中查找匹配条件的行,find在目录中搜索匹配条件的文件。
基于列处理的文本内容:cut–d: -fx /etc/passwd 或 grep changqing /etc/passwd | cut –d: -fx。-d指定分隔字符(默认Tab),-f指定输出的列号,-c基于字符进行切割。
统计文本信息:wc[-xx] 文件。-l统计行数,-w统计单词数,-c 统计字节数,-m统计字符数。
排序文本内容:sort[-xx] 文件。-r倒序排序,-n基于数字进行排序,-f忽略大小写,-u删除重复行,-t c使用c作为分隔符分割为列进行排序,-k c当进行基于指定字符分割为列的排序时,指定基于那个列的排序。
删除重复行:uniq文件。uniq删除相邻的重复行,sort –u删除所有的重复行。
比较文本内容:diff文件1 文件2。-i忽略大小写,-b忽略空格数量的改变,-u统一显示比较信息(一般用于生成pitch补丁文件)
拼写检查:aspell。
处理文本内容:删除关键字tr-d 字符 < 文件,转换大小写tr ‘a-z’ ‘A-Z’<文件。
搜索替换:sed‘s/linux/unix/g’ 文件。将文件中的linux替换成unix,g参数表示替换所有,没有的话表示替换第一个。
软件管理
软件管理最重要的是解决软件包之间的依赖关系。
(1)RPM软件包管理
RPM软件包命名规范:linuxcast-1.2.0-30.e16.i686.rpm
Linuxcast软件名,1.2.0-30软件版本号,e16运行的系统,i686表示64位或32位系统
安装软件:rpm -i xxx.rpm
卸载软件:rpm -e xxx
升级软件:rpm -U xxx.rpm
支持http、ftp协议安装:rpm -ivh http://www.linuxcast.net/spftware,
-v显示详细信息,-h显示进度条
RPM查询:查询rpm软件及其相关的信息
列出所有安装的rpm软件:rpm -qa
查询目标文件属于哪个rpm包:rpm -qf filename
查询指定已安装rpm软件的信息:rpm -qi packagename
查询指定已安装rpm软件包含的文件:rpm -ql packagename
查询未安装rpm的信息:rpm -qip software.rpm
查询未安装rpm的包含的文件:rpm -qlp software.rpm
RPM验证:验证rpm软件是否完整或是否被修改
验证rpm文件: rpm -K software.rpm
验证已安转的软件:rpm -V software
导入秘钥:rpm -import RPM-GPG-KEY-CentOS-6
(2)YUM软件管理
YUM(Yellowdog Updater,Modified)是RPM的前端程序,目的是设计用来自动解决RPM的依赖关系,对RPM进行分组,进行基于组的安装操作,引入仓库repo的概念(存放所有的现有rpm包)。
仓库的配置文件保存在/etc/yum.repos.d/目录下,格式如下:
[centosplus]
name=CentOS-$releasever- Plus
baseurl=http://mirror.centos.org/centos/centosplus
gpgcheck=1
enabled=1
仓库可以使用file、http、ftp、nfs方式,yum配置文件必须是.repo结尾,一个配置文件可以存放多个仓库的配置信息,该目录下可存放多个配置文件。
安装软件:yum installsoftwarename
卸载软件:yum remove softwarename
升级软件:yum update softwarename
查询软件:
搜索:yum search 关键字
列出全部、安装的、最近的、更新的软件:yum list [all/installed/recent/updates]
显示软件信息:yum info packagename
查询某个文件属于哪个rpm包:yum whatprovides filename
创建本地YUM仓库:
(1)将所有rpm文件拷贝到一个文件夹rpm-directory中
(2)通过rpm命令手工安装createrepo软件:rpm -ivh createrepo
(3)运行命令createrepo -v /rpm-directory:rpm-directory为yum的仓库路径,最后会自动创建repodata索引表。如果光盘中有分组信息,则在运行命令时使用-g参数指定分组文件,分组信息保存在光盘/repodata/目录下的***comps.xml文件中 createrepo -g /tmp/*comps.xml /rpm-directory
(4)在/etc/yum.repos.d/中添加仓库信息:创建xxx.repo文件,在文件中加入配置信息,本地采用file:///linuxcast-YUM/(其中/linuxcast-YUM/为仓库路径)
(5)新添加的YUM仓库需要更新:yumclear all、yum list
(3)源代码形式管理:管理麻烦,但兼容性和控制性好
(1)./configure 检查编译环境、相关文件以及配置参数并生成makefile
(2)make 对源代码进行编译,生成可执行文件
(3)make install 将生成的可执行文件安装到当前计算机中
打包压缩相关命令
zip、gzip、bzip2:压缩
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
例:
tar -cvf/home/abc.tar /home/abc 打包,不压缩
tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
tar -jcvf/home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
tar –xvf 或 tar –zxvf 或 tar –jxvf 压缩相应的打包与压缩
vim使用 Emacs
vim三种模式:命令模式、插入模式、底行模式。使用ESC、i、:切换模式。
vim [路径/]目标文件名:若存在则打开,不存在则新建并打开。
1.vim hello.c 2. 键入i 3. 编辑 4. 键入[ESC] 5. 键入:wq保存退出
命令模式:用于复制、粘贴、删除命令
i:在光标前插入文本
o:在当前行的下面插入新行
dd:删除当前光标所在行
yy: 复制当前光标所在行
[n]yy:n为数字,复制当前光标开始的n行
p: 粘贴复制的内容到光标所在行
[n]dd:删除当前光标所在行开始的n行
/name
G:光标移动到文件尾(注意是大写)
u: 取消前一个动作(注意是小写)
r:替代当前光标处的字符
底行模式:
:w 保存
:q 退出vi(系统会提示保存修改)
:q! 强行退出(对修改不做保存)
:wq 保存后退出
:set number 显示行号 :set nonumber 取消行号
:!系统命令 执行一个系统命令并显示结果,按
:!sh 切换到命令行,按Ctrl+d返回vim
:w [filename] 另存为filename的文件
指令 [-参数] 对象
Linux严格区分大小写
指令界面:Ctrl + Alt + F2~F6,图形界面:Ctrl + Alt + F1
切换到root用户:sudo su - 回到基本用户:exit
su–:切换到root用户并使用新环境
“-”表示配置新环境,没有的话保持原环境
sudo:使用管理员用户身份运行命令 sudouname –a
快捷键
ctrl + r:在历史记录中搜索命令,方便写命令操作history
ctrl + c:退出当前命令
ctrl + z:退出当前指令
管理后台作业:命令需要在后台运行:命令后添加一个&
jobs查看后台进程;
bg [数字]控制某个进程在后台继续运行;
fg [数字]控制某个进程在前台继续运行;
暂停某个程序:Ctrl+ z或者发送信号17
日期时间
date: 当前系统时间、hwclock硬件时钟时间、cal日历、uptime系统运行时间
echo: 显示输入的内容
lspci: 查看PCI设备 -v详细信息
lsusb: 查看usb设备 -v详细信息
lsmod: 查看加载的模块(驱动)
常用指令
echo 创建带有内容的文件
find 查找位置 查找参数:在文件系统中搜索某文件,
locate 关键字:系统中快速搜索文件
需预先建立数据库、updatedb建立和更新数据库
tree 树形结构显示目录,需要安装tree包
ln 创建链接文件
root : # user : $
系统管理命令
stat 显示指定文件的详细信息,比ls更详细
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
netstat 显示网络状态信息
man 命令不会用了,找男人 如:manls
clear 清屏
alias 对命令重命名
kill 杀死进程,先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
关机/重启机器
shutdown
-r 关机重启
-h 关机不重启
now 立刻关机
poweroff 关机
reboot 重启
先sync,将内存同步到硬盘中,而后关机或重启。
关闭计算机:poweroff 或 shutdown –h now power off //关闭操作系统、关闭电源
重启:reboot 或 shutdown –r now