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(连接文件, 可以想象成 Windows 下面的快捷方式),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 压缩
来源: https://www.cnblogs.com/54chensongxia/p/11800069.html