Linux基础
学习过程参考 http://www.runoob.com/linux
1.Linux系统启动过程
- 内核的引导 : 计算机打开电源后,首先BIOS自检,按照BIOS中的设置启动,读入/boot下的内核文件
- 运行init: 运行init程序,在/etc/inittab 中读取配置文件,运行守护进程(服务)
- 系统初始化: 调用执行rc.sysinit 脚本(激活交换分区,检查磁盘,加载硬件模块,及其他任务)
- 建立终端: rc执行完毕后,返回init。init就会打开六个终端,以便用户登入系统
- 用户登录系统:分为三种命令行登陆,ssh登陆,图形界面登陆。我们默认登录的是第一个终端或者图形界面终端
2.Linux目录结构
在命令行窗口输入 ls / 显示目录
- /bin Binary的缩写,存放着经常使用的指令
- /boot 存放Linux启动时需要的一些核心文件(连接文件和镜像文件等)
- /dev Device的缩写,存放外部设备(访问方式和访问文件的方式是相同的)
- /etc 存放所有管理系统所需要的配置文件和子目录
- /home 用户主目录,以用户名命名
- /lib 存放系统最基本的动态链接共享库
- /lost+found 存放系统非法关机时生成的文件
- /media 当插入U盘或光驱时,系统识别后z自动挂载到本目录下
- /mnt Mount的缩写,挂载光驱,U盘或者别的文件系统
- /opt 存放主机额外安装的软件
- /proc 虚拟目录,是系统内存的映射,可以直接访问并修改其中的信息,存在于内存而不是硬盘中
- /root 系统管理员的用户主目录
- /sbin s代表SuperUser,存放系统管理员所使用的系统管理程序
- /selinux Redhat/CentOS特有的目录,类似于windows防火墙
- /srv 存放一些服务启动之后需要提取的数据
- /usr 存放用户的应用程序和文件。 /bin 系统用户使用的的应用程序;/src 存放内核源码
- /var 存放着不断扩充的东西。包括各种日志文件
/表示根目录;. 表示当前目录
如果一个目录/文件以 . 开始,即表示他是一个隐藏目录/文件,按默认方式查找时不显示。
3.Linux远程登录
通过ssh服务实现远程登录功能,默认ssh服务端口号为22
安装ssh :
yum install ssh
启动ssh:
service sshd start
登陆:
ssh -p 端口号 用户名@IP
回车输入密码
4.Linux文件与目录:
文件类型 属主权限(u) 属组权限(g) 其他用户权限(o) 0 1 2 3 4 5 6 7 8 9 d r w x r w x r w x 当没有此权限是为 - chgrp 更改文件属组 chgrp [-R] 组名 文件名 更改属组为目标组名,加上-R为递归改变下属所有目录/文件属组
chown 可以更改文件属主 更改属主为目标用户,加上-R为递归改变下属所有目录/文件属主
chmod 更改文件九个属性 如 chomd 777 .bashrc ls -al .bashrc
-rwxrwxrwx 1 root ........... //表示吧。bashrc的九个权限属性改为了rwxrwxrwx //其中r:4 w:2 x:1 //[4+2+1][4+2+1][4+2+1]=rwxrwxrwx
或者chomd u=rwx,g=rx,o=r .bashrc
ls -al .bashrc
-rwxr-xr-- 1 root............... 在Windows底下一个文件是否具有执行的能力是由文件名来判断的,例如:.exe, .bat, .com等等,但是在Linux底下,我们的文件是否能被执行,则是由是否具有x这个权限来决定的!跟文件名是没有绝对的关系的!
类型 | r | w | x |
目录 | 读取目录下的文件资料 |
建立新的文件和目录 删除已经存在的文件和目录(不论该文件或目录权限如何) 更改文件或目录名称 移动该目录内文件和目录位置 |
授权进入该目录 |
文件 | 读取文件内容 | 修改文件内容 | 执行文件内容 |
操作动作 | /dir1 | /dir1/file1 | /dir2 | 重点 |
读取file1 内容 | x | r | - | 要能够进入/dir1 才能读到里面的文件资料 |
修改file1 内容 | x | rw | - | 能够进入/dir1 且修改file1 |
执行file1 内容 | x | rx | - | 能够进入/dir1 且file1 能执行 |
删除file1 文件 | wx | - | - | 能够进入/dir1 具有目录修改的权限即可 |
将file1 复制到/dir2 | x | r | wx | 要能够读file1 且能够修改/dir2 内的资料 |
相对路径 如由 /usr/share/doc 到 /usr/share/man 时,写成: cd ../man
5.常用命令:
date 显示当前时间 cal [month] [year] 显示当前月(指定月)的日历
- ls 列出目录 -a:列出包含隐藏文件的全部文件;-d:仅列出目录本身,不包含目录内文件数据 -l:包含文件的属性与权限等等数据 -li 可以在-l的基础上多列出一个索引节点号
- ll 列出目录,包含隐藏文件,包含文件的属性与权限等等数据
- find 查找文件或目录 -name 文件名:通过名字查找整个目录树
- cd 切换目录
- pwd 显示当前目录 -p:显示出绝对路径
- mkdir 创建一个新的目录 -m:配置文件的权限 -p:可以直接递归创建所有需要的目录
- rmdir 删除一个空的目录 -p:连同上一级空目录也删除
- cp 复制文件或目录 -i:进行操作之前会询问
- rm 移除文件或目录 -i:进行操作之前会询问
- mv 移动文件到某个目录 或修改目录名称
- *************************查询命令**************************
- cat 从第一行开始查看文件内容 -A-b-E-n-T-v
- wc 查看文件Byte数,字数,列数 wc 选项 文件名: -C 显示Byte数 -l 显示行数 -w 显示字数,若不加文件名,则会从stdin读取数据
- tac 从最后一行开始查看文件内容
- nl 显示时输出行号
- more 一页一页地显示文件内容 按space向下翻页;按Enter向下翻一行; /字串 代表向下搜寻【字串】这个关键字;按q 离开more
- less 和more类似 但是可以往前翻页
- head 只看头几行,默认显示十行(包括空行) -n 数字 表示显示【数字】行
- tail 只看尾几行,默认显示十行(包括空行) -n 数字 表示显示【数字】行
强制解锁命令:当遇到 无法获得锁 /var/lib/dpkg/lock - open和 无法锁定管理目录(/var/lib/dpkg/) 时有以下解决办法
- 输入 ps -aux ,列出进程,找到含有apt-get的进程,直接sudo kill PID。
- sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock
可以用man 命令 来查看其使用文档
[Tab]按键:命令补全 在命令xxx后连按两下会输出所有以xxx开头的命令 文件补全 在文件名后连按两下会输出所有以 此名字开头的文件。
要看目前有谁在线上,『who』;而如果要看网路的连线状态,『 netstat -a 』;而要看背景执行的程序可以执行『 ps -aux 』。
6.Linux链接:
硬链接 :通过索引节点来进行连接,允许一个文件拥有多个有效路径名
软连接:符号链接,相当于windows快捷方式,可以理解为指针,引用
7.Linux用户与用户组
多用户多任务分时操作系统
用户账号:控制对系统资源的访问和帮助用户组织文件,提供安全性保护
- 添加账户
useradd 选项 用户名 选项 -c 指定一段注释性描述 -d 目录 指定用户目录 -g 用户组 指定用户所属用户组 -G 用户组 指定附加组 -s Shell文件 指定用户的登陆Shell -u 用户号 指定用户的用户号
- 删除账号
userdel 选项 用户名 //一般情况不加选项是删除/etc/password等系统文件中该用户记录 选项 -r 把用户主目录一起删除
- 修改账号
usermod 选项 用户名 选项差不多和useradd中一样,新增 :-l 新用户名 表示把原用户名改为新的
- 用户口令(密码)
passwd 选项 用户名 选项 -l 锁定口令,即禁用账号 -u 解锁口令 -d 使账户无口令 -f 强迫用户下次登录时修改口令
用户组的管理
*增加一个用户组 groupadd 选项 用户组 选项 -g GID 指定新用户组的组标识号(GID) -o 一般与-g同时使用,表示新用户组的GID和 系统已有用户组的GID相同 *删除一个用户组 groupdel 用户组 *修改用户组属性 groupmod 选项 用户组 选项 -g GID 为用户指定新的GID -o -n 新用户组名 将用户组改名 *切换用户到其他用户组 newgrp 目标用户组
与用户账号有关的系统文件
- /etc/passwd 用cat /etc/passwd打开,其中每一行记录代表一个用户 格式为
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登陆Shell
因为/etc/passwd对所有用户都是可读的,用户口令的加密串存放在/etc/shadow中,而/etc/passwd中的口令字段只存放一个特殊字符“*”或“x”。 用户标识号用来区别用户,如果几个用户名对应用户标识号一样则视为同一个用户,但是他们可有不同的口令,主目录,登陆Shell。 组标识号对应用户所属用户组,对应/etc/group文件中一条记录。 主目录是用户起始工作目录。 Shell是用户与Linux系统之间的接口,登陆Shell默认为/bin/sh,也可以指定为某个特定的程序
- /etc/shadow 只有超级用户可以访问,存放加密后的口令,其中的记录行与/etc/passwd中的一一对应,格式为
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
登录名与/etc/passwd中的一一对应。 加密口令为13个字符的加密后用户口令字,没有口令则说明对应用户登录时不需要口令,如果有不属于{./1~9a~zA~Z]}中的字符,则不能登陆。 "最小时间间隔"指的是两次修改口令之间所需的最小天数 。 "最大时间间隔"指的是口令保持有效的最大天数 。 "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。 "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。 "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
- /etc/group 保存用户组所有信息,用来对用户进行管理和控制访问权限,每个用户都属于某个用户组,用户和用户组之间属于多对多的关系。/etc/passwd中存放的是用户主组,当访问属于附加组的文件时用newgrp使自己成为所要访问组的成员。
组名:口令:组标识号:组内用户列表
一般情况下,用户组没有口令,为空。 组内用户列表中不同用户之间用 ,隔开
如何批量添加用户:
- 编辑一个文本文件,每一行为一个记录,按照 /etc/passwd格式书写 。
- 以root身份执行命令/user/sbin/newusers,从刚创建的users.txt中导入
newusers < users.txt
然后使用vipw或vi /etc/passwd检查/etc/passwd中是否出现这些用户,用户主目录是否已经创建。
- 执行/usr/sbin/pwunconv,将/etc/shadow中的shadow密码解码,然后写回到/etc/passwd中,并将/etc/shadow中的shadow删掉。
pwunconv
- 编辑密码对照文件,注意顺序,格式为
用户名:口令
保存为passwd.txt
- 以root身份执行/usr/sbin/chpasswd,会将编码过的密码写入/etc/passwd 密码栏
chpasswd < passwd.txt
- 以root身份执行/usr/sbin/pwconv,将密码经编码写入/etc/shadow
pwconv
8.Linux磁盘管理
常用命令:
- df 列出文件系统整体磁盘使用量
df 选项 目录或文件名
选项 不加任何选项(只有df) 列出的不包含特殊内存内的文件系统以及swap
-a 列出所有文件系统
-k/m 以KB/MB的容量显示各文件系统
-h 以KB,MB,GB的容量显示各文件系统
-H 以M=1000k代替M=1024k的进位方式
-T 显示文件系统类型,连同显示分区的文件系统名称
-i 不用硬盘容量而用inode数量显示 - du 对文件和目录 磁盘使用空间的查看,这个命令会直接到文件系统去搜寻所有文件数据2
du 选项 文件或目录名称 选项 默认只统计目录下文件量
-a 列出所有文件与目录容量 -h 以G/M显示 -s 列出总量 -S 列出总量,不包含子目录下的统计 -k/m - fdisk [-l] 装置文件名 输出装置的所有分区的内容
- mkfs [-t 文件系统格式] 装置文件名 格式化磁盘 输入mkfs【Tab】【Tab】 (按两个Tab键后)可以显示mkfs支持的文件格式
- fsck 磁盘检验
fsck [-t 文件系统] 选项 装置名称 -t 给定文件系统格式 若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数 选项 -s 按序执行fsck指令来检查 -A 检查/etc/fstab中所有列出来的分区 -C 显示完整的检查进度 -d 打印出e2fsck的debug结果 -p 有-A时同时有多个fsck检查一起运行 -R 有-A是省略/不检查 -V 详细显示模式 -a 检查有错时自动恢复 -r 检查有错时由使用者回答恢复 -y 在不确定哪些是错误的时候,执行他,会在检测每个文件时自动输入yes
- mount 磁盘挂载
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
- umount 磁盘卸载
umount 选项 装置文件名或挂载点 选项 -f 强制卸除 -n 不升级/etc/mtab 情况下删除
9. Linux系统中文件除了实际内容外还包含许多属性,实际数据则放置到 data block 区块中,权限和属性放在inode中,
inode:记录文件属性,与文件一对一,同时记录该文件数据所在的block,可以用 stat 文件名 查看某个文件inode信息。
10.vi/vim
vi:文本编辑器
vim: 由vi发展而来,具有程序编程能力
vi/vim有三种模式:命令模式,输入模式,底线命令模式
- 命令模式:刚启动vim时进入,敲击键盘会被vim识别为命令,按 i 可以切换到输入模式,按 : 切换到底线命令模式,按 x 删除当前光标处所在字符
- 输入模式:按ESC回到命令模式,按Insert切换光标为输入(竖线)/替换(下划线)模式
- 底线命令模式:按ESC回到命令模式,按:wq保存文件,退出程序
直接 vi 文件名.txt 建立一个文件,按 i 进入输入模式,底下有Insert字样