欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

【Linux系列】Linux基础知识整理

程序员文章站 2022-04-21 18:14:52
Linux 操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识。 本篇日志是我学习Linux过程中的简单记录和总结。本着“理论够用,实践为主”的原则,这里没有对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 /),你会看到下面的目录结构:

【Linux系列】Linux基础知识整理

  • /:根目录,一般根目录下只存放目录,不要存放文件,/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压缩