Linux进阶之路(学习笔记,更新中.....)
第一章 Linux基础-概述
Linux的概述
- Linux学习方向
- Linux运维
- Linux嵌入式开发
- 在Linux下做各种程序开发
- Linux的应用领域
- 个人桌面应用领域:此领域时linux应用最薄弱的领域,传统linux由于界面简单、操作复杂、应用软件少一直被windows压制,但近些年来随着ubuntu、fedora 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,linux在个人桌面领域的占有率在逐渐的提高。
- 服务器领域:linux在服务器领域的应用是最强的。linux免费、稳定、高效等特点在这里得到了很好的体现,近些年来linux服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛。
- 嵌入式领域:近些年来linux在嵌入式领域的应用得到了飞速的提高。linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,使其近些年来在嵌入式领域的应用得到非常大的提高。主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA、智能家居、智能硬件等都是其应用领域。以后再物联网中应用会更加广泛。
- Linux的发行版
Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE、国产的红旗Linux
Linux的安装
- 安装VM和CentOS
安装步骤:
- 先安装virtual machine
- 再安装Linux (CentOS)
- VM安装步骤
- 去BIOS里修改设置开启虚拟化设备支持
- 安装虚拟机软件
- CentOS安装步骤
- 创建虚拟机
- 开始安装系统(CentOS)
- vmtools的安装
为了让我们在windows下更好的管理vm虚拟机,可以直接粘贴命令在windows 和 centos系统之间,可以设置windows和centos的共享文件夹,我们需要安装vmtools。
安装步骤:进入centos,点击vm菜单的->install vmware tools,centos会出现一个vm的安装包,点击右键解压, 得到一个安装文件,进入该vm解压的目录 ,该文件在 /root/桌面/vmware-tools-distrib/下,安装 ./vmware-install.pl ,全部使用默认设置即可,需要reboot重新启动即可生效。
Linux的目录结构
linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。在Linux世界里,一切皆文件。
- /bin : (包括/usr/bin 、 /usr/local/bin)是Binary的缩写, 这个目录存放着最经常使用的命令;
- /sbin:(包括/usr/sbin 、 /usr/local/sbin)s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /etc:所有的系统管理所需要的配置文件和子目录 my.conf
- /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件及镜像文件。
- /proc:这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统的信息。
- /srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
- /sys:这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统。
- /tmp:这个目录是用来存放一些临时文件的。
- /dev:类似于windows的设备管理器,把所有硬件用文件的形式存储。
- /media:linux系统会自动识别一些设备,例如光盘、光驱等等,当设别后,linux会把识别的设备挂载到这个目录下。
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看内容了。D:/VM_Share
- /opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可以放到该目录下,默认为空。
- /usr/local:这是另一个给主机额外安装软件所在的安装目录。一般通过编译源码的方式安装的的程序。
- /var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
- /selinux [security-enhanced linux]:SELinux是一种安全子系统,它能控制程序只能访问特定文件。
第二章 Linux实操-基础介绍
远程登录与上传下载
- 为什么需要远程登录Linux
- linux服务器是开发小组共享的.
- 正式上线的项目是运行在公网的.
- 因此程序员需要远程登录到centos进行项目管理或者开发.
- 远程登录工具( XShell5)
Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。 - 远程上传下载工具(XFTP5)
xftp5是一个基于 windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了Xftp 以后,windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。
vi和vim
- 所有的 Linux 系统都会内建 vi 文本编辑器。
Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 - vi和vim常用的三种模式
正常模式
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。
插入模式
按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可.
命令模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
- vi和vim常用的快捷键
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
G | 到第最后一行 |
gg | 到第一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
x | 删除光标所在处字符 |
nx | 删除光标所在处后的n个字符 |
dd | 删除/剪切光标所在行 |
ndd | 删除/剪切光标所在处后的n行 |
dG | 删除光标所在行到文件末尾的内容 |
D | 删除光标所在处到行尾的内容 |
:n1,n2d | 删除n1行到n2行 |
yy | 复制光标所在行 |
nyy | 复制光标所在处后的n行 |
p | 粘贴光标所在行下 |
P | 粘贴光标所在行上 |
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按ESC结束 |
u | 取消上一步操作 |
/String | 搜索指定字符串,搜索时忽略大小写:set ic |
n | 搜索指定字符串出现的下一处位置 |
:%s/old/new/g | 全文替换指定字符串 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 |
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷键,保存修改并退出 |
q! | 不保存修改退出 |
wq! | 保存修改并退出(文件所有者及root用户可使用) |
开机、重启和用户登录注销
- 关机、重启命令
命令介绍
命令 | 作用 |
---|---|
shutdown -h now | 表示立刻关机 |
shutdown -h 1 | 表示1分钟以后关机 |
shutdown -r now | 表示立刻重启 |
halt | 直接使用,效果等价与关机 |
reboot | 重启系统 |
syn | 把内存的数据同步到磁盘 |
注意细节:我们关机或者重启机器之前,应使用syn命令将内存中的数据持久化到磁盘中,防止数据丢失。
- 用户的登录和注销
- 基本介绍
- 登录时尽量少用root账号登录,因为他是系统管理员,他拥有最大的权限 ,避免操作失误。可以使用普通用户登录,登录后在用“su - 用户名”命令进行用户的切换。
- 在提示符下输入“logout”即可注销用户
注意细节: - logout 注销指令在图形运行级别下无效,在运行级别3有效
第三章 Linux实操篇-用户管理
基本介绍
说明:
- Linux系统是一个多用户多任务的操作系统,任何一个需要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- Linux的用户需要至少属于一个组。
添加用户
命令介绍
命令 | 作用 |
---|---|
useradd [选项] 用户名 | 添加一个用户 |
示例:useradd xm 添加一个名为xm的用户。
细节说明:
- 当创建用户成功后,会自动的创建和用户同名的家目录
- 也可以通过“useradd -d 指定目录 用户名”命令给用户指定家目录,进行创建用户。
给用户指定或者修改密码
命令 | 作用 |
---|---|
passwd 用户名 | 给用户指定密码 |
示例:passwd xm
删除用户
命令介绍
命令 | 作用 |
---|---|
userdel 用户名 | 删除一个用户,保留家目录 |
userdel -r 用户名 | 删除一个用户,不保留家目录 |
注意细节:我们一般在删除用户时,会保留其家目录。
查询用户信息
命令介绍
命令 | 作用 |
---|---|
id 用户名 | 查询用户信息 |
示例:id root
若用户不存在,则返回“无此用户”。
切换用户
命令介绍
在Linux中,若用户的权限不够,可通过“su - 用户名”切换为高权限用户,比如root。
命令 | 作用 |
---|---|
su - 用户名 | 切换用户 |
注意细节:
- 从高权限的用户切换为权限低的用户,不需要输入密码,反之需要。
- 当需要返回原来的用户时,使用exit指令。
用户组
组的介绍
在Linux系统中,有组的概念,系统可以对有共性的多个用户进行同一的管理。
增加、删除组
命令 | 作用 |
---|---|
groupadd 组名 | 增加一个用户组 |
groupdel 组名 | 删除一个用户组 |
增加用户时直接指定组
命令 | 作用 |
---|---|
useradd -g 用户组 用户名 | 添加一个指定用户组的用户 |
示例:useradd -g wudang zwj 添加一个名为zwj的用户,将其指定到wudang组(需要先创建wudang组)。
修改用户的组
命令 | 作用 |
---|---|
usermod -g 用户组 用户名 | 修改用户的用户组 |
示例:usermod -g shaolin zwj 将用户zwj从原来的wudang组修改为shaolin组(需要先创建shaolin组)
关于用户和用户组的配置文件
/etc/passwd文件
用户(user)的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户ID:组ID:注释性描述:家目录(主目录):登录shell
/etc/shadow文件
口令的配置文件。
每行的含义:** 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志**
/etc/group文件
组(group)的配置文件,记录Linux包含的组的信息。
每行含义:组名:口令:组ID:组内用户列表
第四章 Linux实操篇-实用指令
运行级别
运行级别说明
运行级别 | 说明 |
---|---|
0 | 关机 |
1 | 单用户(找回丢失密码) |
2 | 多用户状态没有网络服务 |
3 | 多用户状态有网络服务 |
4 | 系统未使用保留给用户 |
5 | 图形界面 |
6 | 重启系统 |
常用运行级别是3和5, 要修改默认的运行级别可改文件。
/etc/inittab的id:5:initdefault:这一行中的数字即代表系统默认的运行级别。
切换到指定的运行级别
运行级别 | 说明 |
---|---|
init [012356] | 切换系统的运行级别 |
如何找回系统的root密码
思路:init 1 切换运行级别到系统的单用户模式,然后修改root密码。因为单用户模式不需要密码就可以登录。
解决步骤:
- 在开启虚拟机的时候迅速按下esc键进入到引导界面;
- 输入小写e进入命令编辑模式,用上下键移动到第二项kernel/vmlinuz……;
- 按小写e,然后输入1按回车把模式更改成单用户模式;
- 按下b进入启动引导模式,接下来可以看到虚拟机已经进入到了单用户模式,并且使用的是不需要密码的root账户登录的;
- 在命令行输入passwd root更改root密码;
- 在命令行输入reboot重启机器即可。
帮助指令
介绍
当我们不熟悉某个指令,我们可以使用Linux提供的帮助指令来了解使用这个指令。
man指令
指令 | 作用 |
---|---|
man [命令或配置文件] | 获得指令的帮助信息 |
示例:man ls 查看ls命令的帮助信息
help指令
指令 | 作用 |
---|---|
help [命令] | 获得shell内置命令的帮助信息 |
示例:help cd 查看cd命令的帮助信息
真正的帮助指令
CSDN、百度
文件目录类指令
pwd指令
指令 | 作用 |
---|---|
pwd | 显示当前工作目录的绝对路径 |
ls指令
指令 | 作用 |
---|---|
ls [选项] [目录或是文件] | 显示目录或者文件的信息 |
常用选项
- -a:显示当前目录的所有文件和目录,包括隐藏的。
- -l:以列表的方式显示信息。
- -h:以人类便于查看的方式显示,一般便于查看文件大小。
- -R: --recursive,递归显示子目录
示例:ls -al 以列表的方式显示当前目录下的所有文件和目录,包括隐藏的。
cd指令
change directory
指令 | 作用 |
---|---|
cd [参数] | 切换到指定目录 |
常用参数
- cd~或cd :回到当前用户的家目录
- cd… :回到当前目录的上一级目录
理解绝对路径和相对路径
绝对路径:以‘/’开头的路径,‘/’代表根目录。(需深刻理解Linux的目录结构)
相对路径:不以‘/’开头的路径,相对路径相对的是当前目录。
mkdir指令
make directory
指令 | 作用 |
---|---|
mkdir [选项] 要创建的目录 | 创建一个目录 |
常用选项
- -p:创建多级目录
示例:mkdir -p /home/animal/tiger 在home目录下创建animal/tiger目录
rmdir指令
指令 | 作用 |
---|---|
rmdir [选项] 要删除的空目录 | 删除空目录 |
常用选项
- -p 递归删除非空目录
-
注意细节:
- rmdir删除的是空目录,如果目录下有内容时无法删除。
- 如果需要删除非空目录,需要使用“rm -rf 要删除的目录”指令进行删除。
touch指令
指令 | 作用 |
---|---|
touch 文件名称 文件名称 … | 创建空文件 |
示例:touch /home/hello.txt /home/hi.txt 在home目录下创建hello.txt文件和hi.txt文件
cp指令
指令 | 作用 |
---|---|
cp [选项] source dest | 复制source源文件到dest目录下 |
常用选项
- -r :递归复制整个文件夹
示例:cp /home/dog/hello.txt /home 将 /home/dog文件夹下的hello.txt文件复制到/home目录下
-
注意细节:
- 若复制文件夹中存在多个文件,会报“略过文件”错误,加上 -r 即可。
- 强制覆盖不提示方法:\cp
rm指令
指令 | 作用 |
---|---|
rm [选项] 要删除的文件或目录 | 移除【删除】文件或目录 |
常用选项:
- -r:递归删除整个文件夹
- -f: 强制删除不提示
示例:rm /home/hello.txt 移除/home目录下的hello.txt文件
rm -rf /home/zwj/test 递归删除/home/zwj下的test目录。
mv指令
指令 | 作用 |
---|---|
mv oldFileName newFilename | 给文件冲命名 |
mv 要移除的文件 目标目录 | 将指定文件移动到指定目录 |
示例:mv /home/hello.txt d.txt 将home目录下的hello.txt文件重命名为d.txt ,并移动到当前目录
mv d.txt /home/test 将d.txt文件移动到test目录下
wc指令
指令 | 作用 |
---|---|
wc [选项] | 输出每个指定文件的行数、单词计数和字节数 |
常用选项:
- -c: --bytes,输出字节数统计
- -m:–chars,输出字符数统计
- -l:–lines,输出行数统计
- -L:–max-line-length,显示最长行的长度
- -w:–words,显示单词计数
cat指令
指令 | 作用 |
---|---|
cat [选项] 要查看的文件 | 查看文件内容,以只读的方式打开 |
常用选项:
- -n:显示行号
-
注意细节:
- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令‘| more’
- cat 文件名 | more[分页浏览]
more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键。
指令 | 作用 |
---|---|
more 文件 | 按页显示文件内容 |
常用快捷键
操作 | 功能说明 |
---|---|
空格键[space] | 代表向下翻一页 |
Enter键 | 代表向下翻一行 |
q | 代表立刻离开more,不再显示改文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前行号 |
less指令
less指令用来分屏查看文件内容,它的功能和more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率,less指令也内置了若干快捷键。
指令 | 作用 |
---|---|
less 文件 | 分屏查看文件内容 |
常用快捷键
操作 | 功能说明 |
---|---|
空格键[space] | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/String | 向下搜索指定字符串 n:向下查找;N:向上查找 |
?String | 向上搜索指定字符串 n:向下查找;N:向上查找 |
q | 离开less这个程序 |
> 指令 和 >> 指令
指令 | 作用 |
---|---|
命令 /文本 > 文件 | 输出重定向,会将原来的内容覆盖 |
命令/文本 >> 文件 | 追加,不会覆盖原来的文件内容,而是追加到文件的尾部 |
-
示例:
- ll > a.txt 将文件目录的信息写入到a.txt文件中(覆盖写),若文件不存在,则创建此文件。
- ls -la >> b.txt 将文件目录的详细包括隐藏信息写入到b.txt文件中(追加)
- cat 文件1 > 文件2 将文件1的内容覆盖写入到文件2
- echo “文本内容” >> 文件 将“文本内容”写入到文件
echo 指令
指令 | 作用 |
---|---|
echo [选项] [输出内容] | 输出内容到控制台 |
-
示例:
- echo $PATH 使用echo指令输出环境变量,输出当前的环境路径
- echo helloWorld 输出helloWorld到控制台
head 指令
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
指令 | 作用 |
---|---|
head 文件 | 查看文件头10行的内容 |
head -n | 查看文件的头n行内容 |
注意细节:head 5等价与head -n 5
tail 指令
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
指令 | 作用 |
---|---|
tail 文件 | 查看文件后10行的内容 |
tail -n | 查看文件的后n行内容 |
tail -f 文件 | 实时追踪文件的所有更新,常用 。Ctrl+C退出监控 |
ln 指令
软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径。
指令 | 作用 |
---|---|
ln -s [原文件或者目录] [软链接名] | 给原文件或目录创建一个软链接 |
示例:ln -s /root /home/linkToRoot 在home目录下创建一个软链接linkToRoot链接到/root目录
注意细节:
- -s(symbolic):对源文件建立符号连接,而非硬连接;
- 删除软链接命令rm -rf /home/linkToRoot 只能用此命令进行删除,注意:linkToRoot后面千万不要加/,会递归删除掉root目录下的文件。若不小心删了,可用“cp -R /etc/skel/.[!.]* ./”恢复,但root用户的一些日志文件和安装资料将会丢失。
- 当我们在linkToRoot目录下用pwd指令查看目录时,我们看到的仍然是软链接所在的目录。
history 指令
查看已经执行过的历史命令,也可以执行历史命令。
指令 | 作用 |
---|---|
history | 查看已经执行过的历史命令 |
history n | 查看最近使用过的n个指令 |
!n | 执行编号为n的指令 |
时间日期类指令
date 指令
指令 | 作用 |
---|---|
date | 显示当前时间 |
date +%Y | 显示当前年份 |
date +%y | 显示当前年份后两位数字 |
date +%m | 显示当前月份 |
date +%M | 显示当前分钟 |
date +%d | 显示当前是哪一天 |
date +%D | 类似于%m/%d/%y |
date +%H | 显示当前小时 |
date +%h | 类似于%b,本地化月份 |
date +%S | 显示当前秒 |
date +%s | 自1970-01-01 00:00:00 UTC至今的时间戳 |
date “+%Y-%m-%d %H:%M:%S” | 显示当前年月日时分秒 |
date -s 字符串时间 | 设置自系统时间。格式为:%Y-%m-%d %H:%M:%S |
cal 指令
指令 | 作用 |
---|---|
cal [选项] | 显示本月日历 |
常用选项
- -1:显示当月日历
- -3:显示当月的前后三个月的日历
- -s:显示当月日历,一周的第一天为星期日
- -m:显示当月日历,一周的第一天为星期一
示例:cal 2022 显示2022年全年的日历
搜索查找类指令
find 指令
find指令将从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端。
指令 | 作用 |
---|---|
find [搜索范围] [选项] | 从搜索范围递归的搜索满足条件的文件 |
常用选项:
- -name(查询方式):按照指定的文件名查找模式查找文件
- -user(用户名):查找属于指定用户名所有文件
- -size(文件大小):按照指定的文件大小查找文件
查找文件时,可用通配符“ * ”进行通配查询
locate 指令
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员需定期更新locate时刻。
指令 | 作用 |
---|---|
locate 搜索文件 | 快速定位文件所处的绝对路径 |
注意细节:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用“updatedb”指令创建locate数据库。
grep 指令和管道符号 |
grep过滤查找,管道符“ | ”表示将前一个命令的处理结果输出传递给后面的命令处理。
命令 | 作用 |
---|---|
grep [选型] 查找内容 源文件 | 顾虑查找符合条件的内容 |
常用选项:
- -n:显示匹配行及行号
- -i:忽略字母大小写
示例:cat hello.txt | grep -ni yyds 在hello.txt文件中查找yyds字符串
压缩和解压类指令
gzip/gunzip 指令
指令 | 作用 |
---|---|
gzip 文件 | 压缩文件,只能将文件压缩为*.gz文件 |
gunzip 文件.gz | 解压缩文件 |
注意细节:当我们使用gzip对文件进行压缩后,不会保留原来的文件
示例:
- gzip hello.txt hi.txt 压缩hello.txt文件和hi.txt文件
- unzip hello.txt.gz hi.txt.gz 解压缩hello.txt文件和hi.txt文件
zip/unzip 指令
zip用于压缩文件,unzip用于解压缩文件,这对指令在项目打包发布中很有用
指令 | 作用 |
---|---|
zip [选项] xxx.zip 将要压缩的内容 | 压缩文件和目录的命令 |
unzip [选项] xxx.zip | 解压缩文件 |
zip常用选项:
- -r:递归压缩,即压缩目录
unzip常用选项:
- -d<目录> :指定解压后文件的存放目录
-
示例:
- zip mypackage.zip -r /home :递归压缩/home目录下所有内容并打包为mypackage.zip文件存放到当前目录下。
- unzip mypackage.zip -d /home/temp :将mypackage.zip压缩文件解压存放到/home/temp下。
tar 指令
tar指令时打包指令,打包后的文件是“ *.tar ”格式的文件。tar是打包,不是压缩。
指令 | 作用 |
---|---|
tar [选项] xxx.tar.gz 打包的内容 | 打包/解压目录/文件,压缩后的文件格式为.tar.gz |
常用选项:
- -c(create):产生.tar打包文件
- -x(extract):解压.tar打包文件
- -t :查看.tar打包文件
- -v :显示详细信息
- -z :支持gzip解压文件
- -f :指定压缩后的文件名
-
示例:
- tar -zcvf a.tar.gz /home/a.txt /home/b.txt 将home目录下的a.txt和b.txt文件压缩为a.tar.gz文件
- tar -zcvf myhome.tar.gz /home/ 将home文件夹压缩为myhome.tar.gz
- tar -zxvf a.tar.gz 将a.tar.gz解压到当前目录
- tar -zxvf myhome.tar.gz -C /home/temp 将myhome.tar.gz文件解压到/home/temp目录下
第五章 组管理和权限管理
linux组基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其他组的概念。
文件/目录 所有者
查看文件的所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
想要查看文件的所有者,一般运用“ ls -ahl ”指令进行查看。
修改文件的所有者
指令 | 作用 |
---|---|
chown 用户名 文件名 | 将指定文件的所有者指定给指定用户 |
文件/目录 所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
查看文件/目录所在组
ls -ahl 或者 ll -ah
修改文件/目录所在组
指令 | 作用 |
---|---|
chgrp 组名 文件名 | 修改文件的所在组 |
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
改变用户的所在组
在添加用户时,可以指定将该用户添加到哪一个组中,同样的用root的管理权限可以改变某个用户所在的组。
指令 | 作用 |
---|---|
usermod -g 组名 用户名 | 改变用户的所在组 |
usermod -d 目录名 用户名 | 改变该用户登录的初始目录(家目录) |
权限的基本介绍
ls -l 中显示以下内容
-rwxrw-r–. 1 tom root 177 2月 14 04:38 aaa.tar.gz
参数 | 说明 |
---|---|
- | 第0位确定文件类型(文件类型常见的有“d 目录”、“- 普通文件”、“l 链接文件”、“c 符号文件,如鼠标,键盘”、“b 块文件,如磁盘”) |
rwx | 第1-3位确定所有者(该文件的所有者)拥有该文件的权限 |
rw- | 第4-6位确定所在组(同用户组)拥有该文件的权限 |
r– | 第4-6位确定所在组(同用户组)拥有该文件的权限 |
1 | 权限后的数字代表的是:如果是文件,表示硬链接的数,如果是目录则表示该目录的子目录个数 |
tom | 文件的所有者 |
root | 文件的所在组 |
177 | 文件的大小(字节),如果是文件夹,显示4096个字节 |
2月 14 04:38 | 文件的最后修改日期 |
aaa.tar.gz | 文件名 |
权限详解
rwx作用到文件
- [ r ] 代表可读(read):可以读取,查看
- [ w ] 代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写的权限,才能删除该文件
- [ x ] 代表可执行(execute):可以被执行
rwx作用到目录
- [ r ] 代表可读(read):可以读取,ls查看目录内容
- [ w ] 代表可写(write):可以修改,目录内创建+删除+重命名目录
- [ x ] 代表可执行(execute):可以进入该目录
修改权限 -chmod
基本说明
通过chmod指令,可以修改文件或目录的权限
第一种方式:+ - = 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u/g/o 的总和)
- chmod u=rwx,g=rx,o=x 文件目录名
- chmod o+w 文件目录名
- chmod a-x 文件目录名
第二种方式:通过数字变更权限
规则:r=4 w=2 x=1,rwx=4+2+1=7
“chmod u=rwx,g=rx,o=x 文件目录名”指令相当于 “chmod 751 文件目录名”
修改文件的所有者-chown
指令 | 作用 |
---|---|
chown newowner file | 改变文件的所有者 |
chown newowner:newgroup file | 改变文件的所有者和所在组 |
- -R : 如果是目录,则使其下所有子文件或目录递归生效
修改文件所在组-chgrp
指令 | 作用 |
---|---|
chgrp newgroup file | 改变文件的所有组 |
- -R : 如果是目录,则使其下所有子文件或目录递归生效
第六章 实操篇 crond任务调度
原理示意图
概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始的执行。如病毒扫描,mysql备份。
2. 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
基本语法
指令 | 作用 |
---|---|
crontab [选项] | 定时任务调度 |
service crond restart | 重启任务调度 |
常用选项:
- -e :编辑crontab定时任务
- -l :查询crontab任务,列出当前有哪些任务调度
- -r :删除当前用户所有的crontab任务,终止任务调度
示例:①crontab -e进入任务编辑页面;②输入“*/1 * * * * ls -l /etc >> /tmp/to.txt”;③当保存退出后就开启了一个定时任务;④该命令含义为每个整分时crond机制会调度“ ls -l /etc >> /tmp/to.txt ”命令。
参数细节说明
5个占位符的说明
项目 | 含义 | 范围 |
---|---|---|
第一个* | 一小时当中的第几分钟 | 0-59 |
第二个* | 一天当中的第几个小时 | 0-23 |
第三个* | 一个月当中的第几天 | 1-31 |
第四个* | 一年当中的第几月 | 1-12 |
第五个* | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个 * 就代表一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“ 0 8,12,16 * * * 命令”,就代表在每天的8点整,12点整,16点整都执行一次命令 |
- | 代表连续的时间范围。比如“ 0 5 * * 1-6 命令”,代表在周一到周六的每天的凌晨5点整执行命令 |
*/n | 代表每隔多久执行一次。比如“ */10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
特定时间执行任务案例
时间 | 含义 |
---|---|
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 在每周一的17点整执行命令 |
0 5 1,15 * * 命令 | 在每个月的1号和15号的凌晨5点整执行命令 |
40 4 * * 1-5 命令 | 在每周一到周五的凌晨4:40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点开始每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周一的0点0分执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱 |
第七章 实操篇 Linux磁盘分区、挂载
分区基础知识
分区的方式
- mbr分区
- 最多支持四个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- MBR最大只支持2TB,但拥有最好的兼容性
- gtp分区
- 支持无限多个主分区(但操作系统可能有限制,比如windows下最多128个主分区)
- 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
- windows7 64位以后支持gtp分区
Linux分区
原理介绍
- Linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明
- Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上时SCSI硬盘。
- 对于IDE硬盘,驱动器标识符为“hdx”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,前四个分区用数字1到4表示,它们是主分区和扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示第二个IDE硬盘上的第二个主分区或扩展分区。
- 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
使用lsblk指令查看当前系统的分区情况
指令 | 作用 |
---|---|
lsblk [选项] | 查看当前系统的分区情况 |
常用选项:
- -f :输出设备的文件系统信息
给系统添加一块硬盘
在挂载硬盘是使用到的指令
指令 | 作用 |
---|---|
fdisk 磁盘目录 | 给磁盘分区 |
fdisk -l | 显示磁盘分区 |
mkfs -t ext4 磁盘目录 | 格式化磁盘格式为ext4 |
mount 磁盘目录 挂载目录 | 将磁盘挂载到某个目录上 |
umount 磁盘目录/挂载目录 | 将磁盘从某个目录上卸载 |
步骤:
- 虚拟机添加硬盘,reboot
- 分区 fdisk /dev/sdb
- m 显示命令列表
- p 显示磁盘分区,同fdisk -l
- n 新增分区
- d 删除分区
- w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区,给分区编号为1。两次回车后默认剩余全部空间写入分区。最后输入w写入分区并退出,若不保存退出输入q。
- 格式化 mkfs -t ext4 /dev/sdb1
- 挂载 先创建一个/home/newdisk目录,挂载mount /dev/sdb1 /home/newdisk
- 设置可以自动挂载(永久挂载,当系统重启时,任然可以挂载到/home/newdisk)
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
磁盘情况查询
查询系统整体磁盘使用情况
指令 | 作用 |
---|---|
df [选项] | 查询系统整体磁盘使用情况 |
常用选项:
- -h:–human-readable print sizes in human readable format (e.g., 1K 234M 2G)
- -l:–local 只显示本机的文件系统
一般使用df -lh查看系统整体磁盘使用情况
查询指定目录的磁盘占用情况
指令 | 作用 |
---|---|
du [选项] 目录 | 查看指定目录的磁盘占用情况,默认为当前目录 |
常用选项:
- -s:指定目录占用大小汇总
- -h:带计量单位
- -a:含文件
- –max-depth=n :子目录深度n
- c:列出明细的同时,增加汇总值
一般使用“ du -ach --max-depth=1 /opt ”查看指定目录的磁盘占用情况
磁盘情况-工作使用指令
- 统计/home文件夹下文件的个数
ls -l /home | grep “^-” | wc -l - 统计/home文件夹下目录的个数
ls -l /home | grep “^d” | wc -l - 统计/home文件夹下的文件的个数,包括子文件夹
ls -lR /home | grep “^-” | wc -l - 统计/home文件夹下的目录的个数,包括子文件夹里的
ls -lR /home | grep “^d” | wc -l - 以树状显示目录结构
tree
第八章 实操篇 网络配置
自动获取
DHCP:动态获取ip
缺点:linux启动后会自动获取IP,每次自动获取的ip地址可能不一样。这样非常不利于做服务器,因为服务器的ip需要是固定的。
静态IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0文件说明
EVICE=eth0 //接口名(设备,网卡)
TYPE=Ethernet //网络类型(通常是Ethernet)
UUID=878f38f3-d242-46c0-8a18-406a25efd730 //随机ID
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
HWADDR=00:0C:29:15:92:07
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
LAST_CONNECT=1644908595