Linux系统概述及常用命令
王军老师《Linux系统命令及shell脚本实践指南》的读书笔记,Linux系统结构及常用指令
Linux系统分支:
Fedora
Fedora和Redhat这两个Linux的发行版联系很密切。 可以说Fedora Core 的前身就是Red Hat Linux。Fedora Core 被红帽公司定位为新技术的实验场,与 Red Hat Enterprise Linux 被定位为稳定性优先不同,许多新的技术都会在 Fedora Core 中检验,如果稳定的话红帽公司则会考虑加入 Red Hat Enterprise Linux 中。
Redhat
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用
Debian
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
Ubuntu
目前使用最多的Linux,简单方便,有KDE和GNOME等视窗界面可供选择,拥有强大的apt-get软件管理程序,安装个管理软件很方便!作为新手,推荐使用。
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Linux系统组成
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。
内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等
帮助命令
man :获取指定命令帮助 |
Help:命令 --help 获取命令选项的帮助 |
Info:详细命令帮助 |
用户管理
useradd 选项 用户名 |
userdel 选项 用户名 |
usermod 选项 用户名 |
passwd 选项 用户名 超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。 |
su:默认切换到超级管理员用户。Linux用户分为根用户(root)、普通用户、系统用户3种 |
sudo:通过一种可配置的方式解决了这个问题。该命令的使用方式是在sudo后跟上需要执行的命令,比如说sudo passwd user1,即使用root的身份修改user1的密码。运行该命令时,系统首先检查/etc/sudoers,判断该用户是否有执行sudo的权限,在确定有执行权限后,系统要求用户输自己的密码,如果密码输入正确,则会以root用户的身份运行passwd user1命令。 |
groupadd 选项 用户组 |
groupdel 用户组 |
groupmod 选项 用户组 |
|
任务管理
at:单一时刻执行一次任务 |
cron: 在Linux中,可以利用cron工具做这种设置。首先需要确定crond进程在运行,如果没有运行,需要先启动该进程。 |
检查用户登录信息
user :查看系统有哪些用户 |
who:查看用户通过终端登录系统的信息 |
w:详细的用户登录信息 |
Linux文件管理
Linux 遵循一切皆文件的准则
文件操作
touch:创建文件。同名已存在文件使用touch会更新创建时间 |
rm:删除文件 |
mv:move的缩写,移动文件到文件夹 |
cat:查看文件内容 |
head:查看文件头部 |
tail:查看文件尾部,可以动态地查看文件尾tail -f |
目录操作
cd:切换目录 |
mkdir:创建目录 |
rmdir和rm:删除目录,在使用rm删除目录时,最常用的组合参数是-rf,这样就不会有任何提醒了,可直接将目录删除干净 |
cp:用户复制文件或者文件夹 |
文件与目录的权限
对文件权限有严格的控制:安全的原因
ls –al 查看文件或目录的权限 |
chmod: Linux下的每个文件都定义了文件拥有者(user)、拥有组(group)、其他人(others)的权限,我们使用字母u、g、o来分别代表拥有者、拥有组、其他人,而对应的具体权限则使用rwx的组合来定义,增加权限使用+号,删除权限使用-号,详细权限使用=号。 同时设置所有人的权限就需要使用数字表示法了,我们定义r=4,w=2,x=1,如果权限是rwx,则数字表示为7,如果权限是r-x,则数字表示为5。假设想设置一个文件的权限是:拥有者的权限是读、写、执行(rwx),拥有组的权限是读、执行(r-x),其他人的权限是只读(r--),那么可以使用命令chmod 754 somefile来设置。 |
chown: 改变文件的拥有者 |
chgrp:改变文件的拥有组 |
查找文件
find:查找 find PATH-name filename |
locate: locate命令依赖于一个数据库文件,Linux系统默认每天会检索一下系统中的所有文件,然后将检索到的文件记录到数据库中。所以使用locate命令要比find命令反馈更为迅速。在执行这个命令之前一般需要执行updatedb命令 |
which: which用于从系统的PATH变量所定义的目录中查找可执行文件的绝对路径 |
whereis: whereis也能查到其路径,但是和which不同的是,它不但能找出其二进制文件,还能找出相关的man文件 |
文件压缩和解压
gzip/gunzip是用来压缩和解压缩单个文件的工具,使用方法比较简单。
tar:tar不但可以打包文件,还可以将整个目录中的全部文件整合成一个包,整合包的同时还能使用gzip的功能进行压缩,比如说把整个/boot目录整合并压缩成一个文件。一般来说,整合后的包习惯使用.tar作为其后缀名,使用gzip压缩后的文件则使用.gz作为其后缀名。因为tar有同时整合和压缩的功能,所以可使用.tar.gz作为后缀名 |
tar –zcvf boot.tgz /boot |
bzip2 :使用bzip2压缩文件时,默认会产生以.bz2扩展名结尾的文件,这里使用-z参数进行压缩,使用-d参数进行解压缩 |
cpio: |
文件系统
文件系统是操作系统用于明确磁盘或分区上相关文件的方法和数据结构,通俗的说法就是在磁盘上组织文件的方法。
Ext3文件系统
因为日志文件系统使用了“两阶段提交”的方式来维护待处理的事务。比方说在写入数据之前,文件系统会先在日志中写入相关记录信息,然后再开始真实地写数据,写完数据后则会将之前写入日志中的内容删除。
硬链接(hard link)又称实际链接,是指通过索引节点来进行链接。在Linux文件系统中,所有的文件都会有一个编号,称为inode,多个文件名指向同一索引节点是被允许的,这种链接就是硬链接。
软链接(soft link)又称符号链接(symbolic link),是一个包含了另一个文件路径名的文件,可以指向任意文件或目录,也可以跨不同的文件系统。软链接和Windows下的“快捷方式”十分类似,删除软链接并不会删除其所指向的源文件,如果删除了源文件则软链接会出现“断链”。
字符处理
|:管道是一种使用非常频繁的通信机制,我们可以用管道符“|”来连接进程,由管道连接起来的进程可以自动运行,如同有一个数据流一样,所以管道表现为输入输出重定向的一种方法,它可以把一个命令的输出内容当作下一个命令的输入内容,两个命令之间只需要使用管道符连接即可。 |
grep是Linux下非常强大的基于行的文本搜索工具,使用该工具时,如果匹配到相关信息就会打印出符合条件的所有行。 |
sort:对无序的数据进行排序 |
uniq: uniq一般都需要和sort命令一起使用,也就是先将文件使用sort进行排序(这样重复的内容就能显示在连续的几行中),然后再使用uniq删除掉重复的内容(uniq的作用就在于删除连续的完全一致的行) |
cut: cut就是截取的意思,它能处理的对象是“一行”文本,可从中选取出用户所需要的部分。在有特定的分隔符时,可以指定分隔符,然后打印出以分隔符隔开的具体某一列或某几列 |
tr:tr命令比较简单,其主要作用在于文本转换或删除 |
paste:将文件按照行进行合并,中间使用tab隔开 |
网络管理
ifconfig命令时将会输出当前系统中所有处于活动状态的网络接口 |
ifconfig eth0 down关闭网卡 ifconfig eth0 up 重启网卡 |
ping程序的目的在于测试另一台主机是否可达,一般来说,如果ping不到某台主机,就说明对方主机已经出现了问题,但是不排除由于链路中防火墙的因素、ping包被丢弃等原因而造成ping不通的情况。 |
进程管理
进程表示程序的一次执行过程,它是应用程序的运行实例,是一个动态的过程。所有的进程都可能存在3种状态:运行态、就绪态、阻塞态
Ps:命令就是一款非常强大的进程查看工具 #ps 的参数非常多,在此列出一些常用的参数 #-A 列出所有的进程,和-e有同样的效果 #-a 列出不和本终端有关的所有进程 #-w 显示加宽可以显示较多信息 #-u 显示有效使用者相关的进程 #aux 显示所有包含其他使用者的进程 |
top命令提供了实时的系统状态监控,可以按照CPU使用、内存使用、执行时间等指标对进程进行排序 |
kill、killall:结束进程 |
lsof(list open files)是一个列出当前系统中所有打开文件的工具。 |
nice renice: 数值越低代表优先级越高,也就能更多地被操作系统调度运行,如果一个进程在启动时并没有设定nice优先级,则默认使用0。普通用户也可以给自己的进程设定nice优先级,但是范围只限于0~19。 |
软件包安装
。
RPM是RedHat Package Manager的简写,顾名思义是红帽软件包管理器的意思。 |
安装参数 -i,--install 安装软件 -v,--verbose 打印详细信息 -h,--hash 使用“#”号打印安装进度(需要和-v同时用) -e,--erase 删除软件 -U,--upgrade=<packagefile>+ 升级软件 --replacepkge 如果软件已经安装,则强行安装 --test 安装测试,并不实际安装 --nodeps 忽略软件包的依赖关系强行安装 --force 忽略软件包及文件的冲突
查询参数(需要使用-q或--query参数) -a,--all 查询所有安装软件 -p,--package 查询某个安装软件 -l,--list 列出某个软件包所包含的所有文件 -f,--file 查询某个文件的所属包 |
安装软件包:rpm-ivh PACKAGE_NAME-VERSION.rpm |
rpm-ivh--test PACKAGE_NAME-VERSION.rpm测试安装软件包,不做真实的安装 |
rpm-ivh--relocate /=/usr/local/PACKAGE_NAME PACKAGE_NAME-VERSION.rpm 安装软件包,并重新定义安装路径 |
rpm-ivh PACKAGE_NAME-VERSION.rpm--force—nodeps强行安装软件包,忽略依赖关系 |
rpm-Uvh PACKAGE_NAME-VERSION.rpm 升级软件包 |
rpm-Uvh PACKAGE_NAME-VERSION.rpm--force—nodeps强行升级软件包,忽略依赖关系 |
rpm--import RPM-GPG-KEY 导入签名 |
rpm-q PACKAGE_NAME查询某个包是否已经安装 |
rpm-qa查询系统中所有已安装的包 |
rpm-e PACKAGE_NAME删除软件包 |
yum的全称为Yellow dog Updater,Modified,是一个基于RPM的shell前端包管理器,能够从指定的服务器上(一个或多个)自动下载并安装或更新软件、删除软件。其最大的好处是可以自动解决依赖关系。RedHat和CentOS的版本为5以上的都会默认安装yum,所以该命令可以直接使用
yum [options] [command] [package] #以下演示中大写的单词是变量 1.安装操作 yum install PACKAGE #安装某个包 例:yum install httpd yum groupinstall GROUP #安装某个软件组 例:yum groupinstall "KDE" #安装KDE桌面
|
2.升级操作 yum update #更新系统中所有需要更新的包 yum update PACKAGE #更新某个包 例:yum update httpd
yum groupupdate GROUP #更新某个软件组 例:yum groupupdate "KDE" #升级KDE桌面
yum check-update #检查当前系统中需要更新的包 |
3.查找操作 yum list #显示软件源中所有可用的包,一般不用 yum list installed #显示系统中已经安装过的包 yum info PACKAGE #显示某个包的信息 例:yum info httpd
yum groupinfo GROUP #显示某个软件组的信息 例:yum groupinfo "KDE" #显示KDE桌面软件的信息 yum grouplist #显示软件源宏所有的可用软件组
|
4.删除操作 yum remove PACKAGE #删除某个包 例:yum remove httpd #删除httpd包
yum groupremove GROUP #删除某个软件组 例:yum groupremove "KDE" #删除KDE桌面
|
5.清除操作 yum clean #清除使用yum所生成的缓存文件 |
常用工具
vi编辑器是Visual Interface的简称,是Linux系统中最基本的文本编辑器,其功能与很多图形编辑器类似,可以进行编辑、查找、删除、替换等文本操作。
vi编辑器有3种模式,分别是一般模式、编辑模式、末行指令模式。
sed(stream editor)是一种非交互式的流编辑器,通过多种转换修改流经它的文本。但是请注意,默认情况下,sed并不会改变原文件本身,而只是对流经sed命令的文本进行修改,并将修改后的结果打印到标准输出中(也就是屏幕)。 |
awk则是基于列的文本处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。事实上,awk是一种编程语言,其语法异常复杂,所以awk也是一种较难掌握的文本处理工具。本节将使用大量的例子来直接演示awk的常见用法,让读者能迅速学会使用 |
文摘引用地址:
https://www.cnblogs.com/Torres_fans/archive/2010/09/05/1818686.html