【Linux系列】Linux基础知识整理
linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解linux相关的知识。
本篇日志是我学习linux过程中的简单记录和总结。本着“理论够用,实践为主”的原则,这里没有对linux底层原理方面的知识做深入研究,只是记录了相关的基础概念,有兴趣的同学可以参考linux相关的专业书籍(鸟哥的linux私房菜)。
linux简介
历史简介
linux系统的创始人是芬兰著名程序员linus torvalds(发音为 ['li:nэks])。后来经过一众linux爱好者不断提交代码,linux内核系统越来越完善壮大。
发行版本
基于linux内核的linux发行版本有很多。较知名的发行版有:ubuntu、redhat、centos、debain、fedora、suse、opensuse、turbolinux、bluepoint、redflag、xterm、slackware、国产麒麟。平时我们常用的有centos和redhat,如果习惯使用界面的用户,可以考虑使用ubuntu。
但是linux操作系统一般都使用在服务器领域,管理人员都是通过远程登录管理服务器资源的,所以为了节省带宽很少会安装界面程序,一般都是通过命令行登录。因此掌握常用的linux命令很重要。
linux vs unix
linux基础知识
一些快捷键
- ctrl+c:不执行当前输入的命令;
- ctrl+d:退出当前终端,和exit功能一样;
- ctrl+l:清屏;
- ctrl + z: 暂停当前进程,比如你正运行一个命令,突然觉得有点问题想暂停一下,就可以使用这个快捷键。暂停后,可以使用 fg 恢复它。
目录结构
进入linux系统的主目录(使用命令:cd /),你会看到下面的目录结构:
- /:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100m即可
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/x11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份;
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
/mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。如:fc4使用的fedora 社群开发软件,如果想要自行安装新的kde 桌面软件,可以将该软件安装在该目录下。以前的 linux 系统中,习惯放置在 /usr/local 目录下
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
/usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其pid存放在该目录下。建议单独分区,设置较大的磁盘空间
文件和目录
通过ls命令我们可以查看文件的详细属性,下面介绍下下面输出具体是什么含义。
[root@shb-l0074969 tmp]# ls -al total 52 drwxrwxrwt. 5 root root 16384 dec 13 14:40 . dr-xr-xr-x. 28 root root 4096 oct 11 02:35 .. -rw-r--r-- 1 root root 840 nov 3 2016 autofsinfo.rb drwxr-xr-x 2 root root 4096 nov 23 11:39 hsperfdata_root
- 第一列:表示文件时普通文件、文件夹、还是其他类型的文件。常见的类型有d(文件夹)、-(普通文件)、l(连接文件,可以想象成window下面的快捷方式)、s(socket文件)。后边的9位,每三个为一组。均为rwx 三个参数的组合。其中r 代表可读,w代表可写,x代表可执行。前三位为所属主(user)的权限,中间三位为所属组(group)的权限,最后三位为其他非本群组(others)的权限。
- 第2列,表示为连接占用的节点(inode),若为目录时,通常与该目录地下还有多少目录有关系;
- 第3列,表示该文件的所属主。
- 第4列,表示该文件的所属组。
- 第5列,表示该文件的大小。
- 第6列、第7列和第8列为该文件的创建日期或者最近的修改日期,分别为月份日期以及时间。
- 第9列,文件名。如果前面有一个. 则表示该文件为隐藏文件。
文件系统格式
linux文件系统的格式是ext2或者ext3
认识/etc/passwd和/etc/shadow
这两个文件保存着用户的用户和密码等信息。打开/etc/passwd文件,可以看到下面内容。/etc/passwd由’:’分割成7个字段,每个字段的具体含义是:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。用户名字符可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。
2)存放的就是该账号的口令,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,在这里只用一个’x’代替。
3)这个数字代表用户标识号,也叫做uid。系统识别用户身份就是通过这个数字来的,0就是root,也就是说你可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。通常uid的取值范围是0~65535,0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。
4)表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似。
5)注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger的功能时就会显示这些信息的(稍后做介绍)。
6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的,比如你建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修改/etc/passwd文件中test1那行中的该字段为/data即可。
7)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。linux的shell有很多种sh, csh, ksh, tcsh, bash等,而redhat/centos的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。
再看看/etc/shadow的内容
linu压缩文件
linux下常见的压缩格式
.zip zip压缩文件
.gz gzip 压缩工具压缩的文件
.bz2 bzip2 压缩工具压缩的文件
.tar tar 打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 可以理解为先用tar打包,然后再gzip压缩
.tar.bz2 同上,先用tar打包,然后再bzip2压缩
上一篇: 让走还要sayhello
下一篇: 看起来不是很难吃