概述
Linux本质是一个OS,图标是一只企鹅,叫Tux。
Linux发行版本:
-
Red Hat:收费版 RHEL(Red Hat Enterprise Linux),免费版 fedora(实验版) 和 CentOS。
-
debian➡ubantu➡Linux Mint,都免费。
-
SUSE:收费版 SEL(SUSE Enterprise Linux),免费版 open SUSE。
-
其他:gentoo linux,archlinux➡manjaro。
Linux系统中一切皆文件:
/bin:Binary,存放常用命令
/sbin:Super User Binary,系统管理员的命令
/home:普通用户的目录,每个用户在此目录下有一个以账号命名的文件夹
/root:系统管理员的目录
/lib:系统的基础共享库,几乎所有的程序都用到
/lost+found:一般为空,系统非法关机后会存放一些文件
/etc:配置文件
/usr:用户的很多程序和文件放在此处,类似windows的program files
/boot:存放启动Linux的核心文件,自己安装的别放这
/proc:一个虚拟的目录,是系统内存的映射
/srv:service,存放一些服务启动之后的需要提取的数据
/sys:存放了2.6内核中新出现的一个文件系统sysfs
/tmp:存放临时文件
/dev:类似Windows的设备管理器,将所有硬件用文件形式存储
/media:Linux会将自动识别的设备(U盘、光驱)挂载到此目录下
/mnt:用来让用户挂载别的文件系统
/opt:安装额外软件的目录,比如MySQL
/var:存放不断扩充或经常被修改的东西,比如日志文件
/selinux:SELinux是一种安全子系统,能控制程序只能访问特定文件
Vim
Vim是类Unix系统最常用的文本编辑器
安装命令:
yum -y install vim
使用Vim打开文件:
vim a.txt
三种模式
-
一般模式
- 打开文件后默认的模式
- 可以删除、复制、粘贴
- 但是无法编辑文件内容
-
编辑模式
- 一般模式下按[i、I、o、O、a、A]进入的模式
- 可以进行文件的编辑
- Esc退回一般模式
-
命令模式
- 一般模式下按[?、/、:]进入的模式
- 可以输入一些指令进行操作
- 比如查找、替换、保存、退出、显示行号等操作
- Esc退回一般模式
常用命令
一般模式:
指令 | 功能 |
---|---|
yy | 复制当前行 |
y 数字 y | 从当前行开始复制n行 |
dd | 删除当前行 |
d 数字 d | 从当前行开始删除n行 |
p | 在光标所在行的下一行粘贴 |
u | 撤销 |
^ | 光标移到行头 |
$ | 光标移到行尾 |
gg | 光标移到页头 |
G | 光标移到页尾 |
数字 + G | 光标移到目标行 |
yw | 复制一个单词 |
dw | 删除一个单词 |
X | 删除一个字母,向前删,类似Backspace |
x | 删除一个字母,向后删,类似Del |
编辑模式:
指令 | 功能 |
---|---|
i | 光标前插入 |
I | 光标所在行的行头插入 |
a | 光标后插入 |
A | 光标所在行的行尾插入 |
o | 下一行插入 |
O | 上一行插入 |
命令模式:
指令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
:%s/旧字符串/新字符串 | 查询替换 |
/字符串 | 查找字符串 |
?字符串 | 查找字符串 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
ZZ | |
:nohl | 去除高亮显示 |
服务管理命令
临时服务管理
命令 | 功能 |
---|---|
systemctl --type service | 查看所有运行中的服务 |
systemctl start 服务名 | 开启服务 |
systemctl stop 服务名 | 停止服务 |
systemctl restart 服务名 | 重启服务 |
systemctl status 服务名 | 查看服务状态 |
服务自启管理
命令 | 功能 |
---|---|
systemctl list-unit-files | 查看所有服务自启配置 |
systemctl enable 服务名 | 开启服务自启 |
systemctl disable 服务名 | 关闭服务自启 |
systemctl is-enabled 服务名 | 查看某个服务自启状态 |
建议关闭防火墙自启动
systemctl disable firewalld
关机&重启
命令 | 功能 |
---|---|
sync | 将数据从内存同步到硬盘 |
poweroff | 关闭系统,等价 shutdown -h now |
reboot | 重启系统,等价 shutdown -r now |
shudown [选项] [参数]
选项
- -h 关机,即 halt
- -r 重启,即 reboot
参数
- now,立刻
- 数字,多久后执行,单位分钟
还可以显示提示信息,比如
shutdown -h 3 '系统会在3分钟后关机'
常用快捷键
按键 | 功能 |
---|---|
Ctrl + c | 停止进程 |
Ctrl + l |
清屏,等价命令 clear 彻底清屏是 reset |
Tab | 提示,防止输错 |
上下键 | 复用执行过的命令 |
Ctrl + Alt | Linux 和 Windows 之间切换 |
文件目录类
man 获得帮助信息
man 命令名
- man 即 manual,手册
help 获得shell内置命令的帮助信息
help 命令名
pwd 显示当前目录的绝对路径
[root@hadoop101 ~]# pwd
/root
ls 列出目录的内容
ls [选项] [目录]
-
选项
- -l 列出详细信息,简写为 ll
- -a 同时列出隐藏文件
-
目录
- 相对路径或绝对路径
- 若不指定,默认当前目录
文件类型和权限 | 链接数 | 文件属主 | 文件属组 | 文件大小(byte) | 创建或最近修改时间 | 文件名 |
---|---|---|---|---|---|---|
drwxr-xr-x. | 2 | root | root | 4096 | 5月 17 17:47 | test |
注意:链接包括硬链接和软链接,文件自身就是一个硬链接,所以链接数都至少为1
cd 切换路径
cd [参数]
参数 | |
---|---|
cd 相对路径/绝对路径 | 切换目录 |
cd ~ 或 cd | 回到当前用户的家目录 |
cd .. | 切换到上一级目录 |
cd - | 切换到上一次所在目录 |
cd -P | 跳转绝对物理路径,而非快捷方式路径 |
mkdir 创建目录
mkdir [选项] [目录]
-
选项
- -p 创建多层目录
touch 创建空文件
touch [文件名]
- 可以直接写文件名,会在当前目录下创建
- 也可写任意已存在目录的路径,在其下创建
cp 复制文件
cp [选项] [源文件或目录] [目标文件或目录]
-
选项
- -r 递归复制整个文件夹
- 若源文件与目标重名,可选择是否覆盖,也可以用 \cp 命令强制覆盖不提示
rm 删除目录或文件
rm [选项]
-
选项
- -r 递归删除目录所有内容
- -f 强制执行不提示
- -v 显示指令的详细执行过程
mv 重命名或移动文件
mv oldFile newFile 重命名文件
mv source dest 移动文件
cat 查看小文件
cat [选项] [文件]
- 一般用来查看一屏可以显示全的文件
-
选项
- -n 查看内容时显示行号
less 查看大文件
- 不是一次性加载,而是根据现实需要来加载内容,适于大文件
- pageup、pagedown翻页
- ?或/查询文件中是否包含某内容
- q离开less程序
echo 向控制台输出内容
echo[选项] [内容]
-
选项
- -e 支持转义字符,比如\t、\n
head 输出文件头部内容
head [选项] [文件]
- 默认显示文件前十行的内容
-
选项
- -n 指定显示前多少行内容
tail 输出文件尾部内容
- 默认显示文件尾部十行的内容
-
选项
- -n 指定显示尾部多少行内容
- -f 实时追踪该文档的所有更新,经常用来查看日志
> 覆盖 和 >> 追加
ll > a.txt 将ll命令查到的内容覆盖到a.txt中
cat t.txt >> a.txt 将t.txt中的内容追加到a.txt的末尾
ln 软链接
ln -s [源文件或目录] [软链接名]
- 软链接命名时,可指定创建目录
tar 压缩解压
压缩:tar -zcvf 压缩包名.tar.gz 需要压缩的内容
- 设定压缩包名时,可指定压缩包的位置
解压:tar -zxvf 压缩包 -C 目录
- -C用来指定解压的位置
- 若不加-C,解压到当前目录
选项说明:
- -z 打包同时压缩
- -c 产生.tar打包文件
- -x 解包.tar文件
- -v 显示详细信息
- -f 指定压缩后的文件名
用户管理类
useradd 添加用户
useradd 用户名
- 添加新用户
useradd -g 用户组 用户名
- 添加新用户到某个组
groupadd 添加组
groupadd 用户组名
passwd 修改用户密码
passwd 用户名
- 设置或更改用户密码
id 查看用户信息
id 用户名
- 查看用户信息
打开/etc/下的passwd文件能查看创建了哪些用户
打开/etc/下的group文件能查看创建了哪些组
su 切换用户
su 用户名
- 切换到某个用户
- 只能获得执行权限,不能获得环境变量
- 每次切换用户都会嵌套启动一个新的线程,需要用exit一层层退出来
su - 用户名
- 同时获得执行权限和环境变量
sudo 使用root权限
sudo 让普通用户使用root权限执行一些命令
-
在/etc/下的sudoers文件91行的root下面添加内容
## Allow root to run any commands anywhere root ALL=(ALL) ALL zhangsan ALL=(ALL) ALL
-
或者配置成采用sudo命令时,不需要输入密码
## Allow root to run any commands anywhere root ALL=(ALL) ALL zhangsan ALL=(ALL) NOPASSWD:ALL
userdel 删除用户
userdel 用户名
- 删除某个用户但保留用户主目录
userdel -r 用户名
- 删除某个用户同时删除用户主目录
groupdel 删除组
groupdel 用户组名
usermod 修改用户属组
usermod -g 用户组名 用户名
- 修改用户所在组,给定的组必须存在
groupmod 修改用户组名
groupmod -n 新组名 旧组名
who 查看当前用户
whoami 显示当前的用户名称
who am i 显示登录时的用户名称
文件权限类
文件属性
ll命令可以查看文件权限,如果没有该权限,对应位置显示 -
文件类型 | 属主权限U | 属组权限G | 其他用户权限O |
---|---|---|---|
d / l / - | r-w-x | r-w-x | r-w-x |
目录 / 软链接 / 文件 | 读-写-执行 | 读-写-执行 | 读-写-执行 |
rwx作用到文件
- r:可读,可以读取、查看
- w:可写,可以编辑修改,但不可删除,删除文件需要对文件所在目录有写权限
- x:可被系统执行
rwx作用到目录
- r:可读,可以ll查看目录内容
- w:可写,目录内创建、删除、重命名文件
- x:可以进入该目录
chmod 修改文件权限
方式一:chmod [{u g o a} {+ - =} {r w x}] [文件或目录]
- u g o a 对应 属主 属组 其他用户 全部
- + - = 对应 增加 删除 设置
- r w x 对应 读 写 执行
方式二:chmod [421] [文件或目录]
- r w x 分别赋值 4 2 1
chown 改变所有者
chown [选项] [最终用户] [文件或目录]
-
修改文件或目录(不包括子文件或子目录)的所有者
-
选项
- -R 修改目录的同时作用到其下所有子文件
chgrp 改变所在组
chgrp [最终用户组] [文件或目录]
搜索查找类
find 条件查找
从指定目录下递归的遍历所有文件即子目录
find [搜索范围] [选项]
-
选项
- -name 根据指定文件名查找
- -user 根据指定用户名查找
- -size 根据指定文件大小查找
grep 过滤查找
通常结合管道符 | 一起使用
选项 -n 显示匹配行和行号
which 查看命令位置
which ll 查看ll命令在哪个文件夹内
进程线程类
ps 查看系统进程
ps -aux | grep xxx 查看系统所有进程,可以查看CPU和RAM占用率
ps -ef | grep xxx 可以查看父子进程之间的关系
kill 终止进程
kill [进程号]
- 通过进程号杀死进程
- 选项 -9 强迫进程立即停止
killall [进程名称]
- 通过进程名杀死进程,支持通配符
- 用于系统负载过大变得缓慢时
netstat 查看进程网络信息
netstat -anp | grep 进程号
- 查看进程的网络信息
netstat -nlp | grep 进程号
- 查看网络端口号的占用情况
选项
- -n 不显示别名,能显示数字的全部转化数字
- -l 仅列出处于监听下的服务状态
- -p 显示正在被哪个进程调用
时间日期类
date 显示当前时间
date [选项] [日期格式] 解释:显示当前时间 日期
date #显示当前时间
date +%Y #显示当前年份
date +%m #显示当前月份
date +%d #显示当前是本月的哪一天
#组合,根据设定格式显示年月日时分秒,加号别忘了,注意大小写,不能有空格,除非加引号
date +%Y-%m-%d-%H:%M:%S
date +%Y-%m-%d %H:%M:%S #达咩,更正如下
date +%Y-%m-%d" %H:%M:%S"
#date显示非当前时间
date -d '2 days ago' #前天时间,单引号
date -d '-1 days gao' #明天时间
#date设置系统时间
date -s "2017-5-2 19:32:13"
#显示时间戳
date +%s
cal 显示日历
cal [选项] 解释:查看日历,不加选项显示本月日历
cal #显示本月日历
cal 2017 #显示2017年的日历
cal -y #显示本年日历
crontab系统定时任务
crontab [选项]
#首先查看守护进程crond服务是否开启
systemctl status crond
选项
-
-e 编辑crontab定时任务
- 此命令会进入vim编辑界面,设置定时任务
- -l 查询所有的crontab任务
- -r 清空当前用户的所有crontab任务
vim编辑界面中,任务格式为 * * * * * 执行的任务
* | 含义 | 范围 |
---|---|---|
第一个 “ * ” | 一个小时中的第几分钟 | 0—59 |
第二个 “ * ” | 一天当中的第几小时 | 0—23 |
第三个 “ * ” | 一个月当中的第几天 | 1—31 |
第四个 “ * ” | 一年当中的第几个月 | 1—12 |
第五个 “ * ” | 一周当中的星期几 | 0—7(0 7都代表周日) |
此外,还有一些特殊符号
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第二个*代表一天中每小时都执行一次 |
, | 代表不连续的时间。比如 “0 8,12,16 * * *”代表每天的8点12点16点0分都执行一次 |
- | 代表连续的时间范围。比如“0 5 * * 1-6”代表在周一到周六的凌晨5点执行一次 |
*/n | 代表每隔多久执行一次。比如“*/2 * * * *”代表每隔2分钟就执行一次命令 |
软件管理类
RPM 包管理
RPM(RedHat Package Manager),RedHat软件包管理工具,类似win里的setup.exe,是Linux里的打包安装工具。
名称格式
Apache-1.3.23-11.i386.rpm
"Apache"
- 软件名称
"1.3.23-11"
- 软件版本号,主版本和此版本
"i386"
- 软件运行的硬件平台,Intel 32位处理器的统称
"rpm"
- 文件扩展名,代表RPM包
查询命令
rpm -qa 解释:查询安装的所有rpm软件包
rpm -qi 【软件】 解释:查询某个软件的详细信息
卸载命令
rpm -e 【软件包】 解释:卸载软件包,不用写全名,软件名就可以了
rpm -e --nodeps 【软件包】 解释:不检查依赖,强行卸载,会导致使用该包的软件无法工作
安装命令
rpm -ivh 【RPM包全名】
选项 | 作用 |
---|---|
-i | install,安装 |
-v | --verbose,显示详细信息 |
-h | --hash,显示进度条 |
--nodeps | 安装前不检查依赖 |
YUM 仓库管理
YUM是一个Shell前端软件包管理器,基于RPM包管理,能从指定服务器自动下载RPM包并安装,可以自动处理依赖性关系,并且一次性安装所有依赖包,无需繁琐的一次次下载安装。
基础命令
yum 【选项】【参数】
选项
- -y 对所有提问都回答"yes"
参数 | 作用 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
remove | 卸载 |
check-update | 检查是否有可用更新包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |