Linux快速入门
Linux目录结构
/
是所有目录的顶点,称为根目录。不同的目录下的数据可分布在不同的磁盘,所有目录按规则组织与命名。
Linux也分绝对路径与相对路径
系统目录
绝对路径 | 用途 |
---|---|
/ |
跟目录 |
/bin |
常用的二进制命令所在目录,如:ls、cp、mkdir |
/boot |
Linux内核与系统引导程序目录 |
/dev |
设备文件的目录,如:声卡、磁盘、光驱 |
/etc |
yum、rpm方式安装应用程序的默认配置文件路径 |
/home |
用于存放用户数据,用户的“家”目录 |
/var |
系统与软件服务运行日志目录 |
/lib |
启动系统与运行命令所需的共享库文件与内核模块目录 |
/proc |
系统运行时,进程信息与内核信息存放在此目录 |
/root |
Linux超级用户目录,类似于windows的administrator |
/sbin |
系统管理命令存放目录,是超级用户root可执行命令的存放地 |
/usr |
存放用户应用程序的目录,包含两个重要子目录 |
/usr/local |
编译方式安装程序的默认目录 |
/usr/src |
编译方式安装程序的默认目录 |
Linux命令
命令 | 用途 |
---|---|
cd |
切换目录 |
pwd |
查看当前目录 |
ls、ll |
显示目录内容 |
mkdir |
创建目录 |
cp |
复制文件与目录 |
mv |
移动或重命名文件 |
rm |
删除文件或目录(需确认是否删除) |
rm -f |
强制删除文件 |
rm -rf |
强制删除整个目录(慎用!) |
find |
查找目录或文件 |
- 小技巧,cd 后面不用写全名称,只输入前面几个字母,按Tab就能补全。如果前缀相同的话连续按两次Tab就能列出所有符合要求的同前缀项
- 在命令后面加 --help 就能看到这个命令所能使用到的所有参数
- 加 -v 可以看执行过程v可以和其他命令连写,比如 -pv
VIM文本编辑器
vi是Linux重要的文字编辑工作,Vim是它的增强版,vim用于在远程环境下用命令的形式对文本进行在先编辑。用法格式:vim [选项] [文件]
vim三种模式
- 普通模式: 默认模式,文本只读,不可编辑。
- 编辑模式:编辑文本模式,普通模式按i键进入,ESC键退出
- 命令模式:执行保存、搜索、退出等操作
vim快捷键
命令 | 用途 |
---|---|
delete或x |
删除单个字符 |
dd |
删除整行 |
/str |
全文查找str字符串,n下一个,N前一个 |
:% s/old/new/g |
替换文件内所有old字符串为new |
u |
撤销最近一次操作 |
:wq或:wq! |
退出并保存,只读文件要额外加! |
:q! |
强制退出放弃保存 |
Linux文本工具
命令 | 用途 |
---|---|
echo |
屏幕打印与文本输出 |
cat |
合并文件或查看文件内容 |
tail |
显示文件内容尾部 |
grep |
文本过滤工具 |
echo "Hello" #在屏幕上输出Hello
echo "Hello" > hello.txt #将Hello存储到hello.txt文件内
echo "Hello" >> hello.txt #追加内容到hello.txt
echo > hello.txt << ESC #在hello.txt内存储内容以ESC为结尾,其中ESC可以为任意字符
cat hello.txt #显示文本内所有内容
cat -n hello.txt #显示文本并加上序号
cat -nE hello.txt #显示文本前边加序号并且末尾空格转换为$
cat -n hello.txt #显示文本并加上序号
tail hello.txt #显示末尾内容(默认3行)
tail -n 2 hello.txt #显示末尾内容并加上序号
grep nb hello.txt #显示包括nb的文本行
grep -v nb hello.txt #显示不包括nb的文本行
grep d...nb hello.txt #可以用正则表达式的方式过滤内容
#通道
ll | grep hello.txt
ll | grep -E hello[1-9].txt #正则表达式方式过滤内容
打包与压缩
gzip
是Linux中的文件压缩程序
gzip
压缩文件扩展名:.gz
大流量网站默认都在使用
gzip
进行数据压缩传输
tar打包与压缩
tar
是Linux系统将多个文件打包和压缩的工具tar
本质是打包软件,扩展名.tar
tar
可结合gzip
或其他压缩工具实现打包压缩,扩展名.tar.gz
#压缩命令:tar zcvf 打包名 打包目录
tar zcvf tomcat.tar.gz /usr/local/tomcat
#解压命令:tar zxvf 包名 -C“将当前文件释放到:” 目录
tar zxvf tomcat.tar.gz -C /usr/local/tomcat
选项 | 用途 |
---|---|
z |
通过gzip压缩或解压 |
c |
创建新的tar.gz |
v |
显示执行过程 |
f |
指定压缩文件名称 |
x |
解压缩tar.gz文件 |
-C |
指定解压缩目录 |
yum方式安装应用程序
在CentOS中安装第三方应用程序包含两种方式:
- rpm:Red Hat软件包管理器,相当于应用程序安装文件的执行者
- 编译安装:用户自己从网站下载程序源码进行编译安装
yum与rpm的关系
rpm安装过程中,需要用户自己解决依赖问题
yum通过引入软件长裤,联网下载rpm包及依赖,并依次安装
yum常用命令
命令 | 用途 |
---|---|
yum search 应用名 |
在仓库中查询是否存在指定应用 |
yun insrall -y 应用名 |
全自动下载安装应用及其依赖 |
yum info 应用名 |
查看应用详细信息 |
yum list insralled 应用名 |
查看已安装的应用程序 |
rpm -ql 应用名 |
查看安装后输出的文件清单 |
yum remove -y 应用名 |
全自动卸载指定应用 |
编译安装
如yum仓库未提供rpm,往往需要采用编译安装
编译安装是指从应用官网下载源码后,对源码进行编译安装后使用
编译命令:
make
使用对应编译器对源码编译生成可执行文件
yum安装 | 编译安装 | |
---|---|---|
兼容性 | 差,每个发行版都要准备 | 好,全平台适用 |
复杂度 | 简单 | 复杂 |
安装速度 | 块 | 慢 |
来源 | 应用仓库 | 官网下载 |
应用场景 | 日常系统软件 | 开源软件,最近版本 |
编译安装Redis
- 安装gcc():
yum install -y gcc
- 进入Redis解压缩文件夹执行:
make
- 运行Redis:
./src/redis-server redis.conf
Linux系统管理命令
命令 | 用途 |
---|---|
ifconfig |
查看网卡IP |
netstat (-tulpn或-ano) |
查看网络端口号 |
ps -ef&kill -9(s) PID |
查看进程&杀掉进程 |
netstat常用选项
选项 | 用途 |
---|---|
t |
显示tcp传输协议的连接状况 |
u |
显示udp传输协议的连接状况 |
l |
显示处于监听状态的网络连接 |
p |
显示应用PID和程序名称 |
n |
显示ip地址 |
a |
显示所有连接 |
o |
显示计时器 |
应用服务化
应用服务化是指让应用程序以服务的方式在系统后台运行
Linux系统对服务化应用进行统一管理
服务管理命令:
systemctl
指令 | 用途 |
---|---|
start |
启动服务 |
stop |
停止服务 |
restart |
重启服务 |
enable |
设置开机启动 |
disable |
禁止开启启动 |
status |
查看服务状态 |
daemon-reload |
重载服务配置文件 |
list-unit-files |
列出所有服务 |
shutdown -r now |
重启系统 |
[Unit]
Description=Redis
#在服务启动中描述顺序,必须在以下完成后再启动Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
#服务在后台运行
Type=forking
#描述进程编号的PID文件
PIDFile=/run/redis_6379.pid
#服务启动时调用redis-server以及redis-
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
#服务关闭
ExecStop=/bin/kill -s QUIT $MAINPID
#为每一个服务设置私有的tmp临时文件目录
PrivateTmp=true
[Install]
#Redis服务分配到multi-user服务组上
WantedBy=multi-user.target
用户与用户组管理
-
Linux
是多用户任务系统,包含两个概念:用户与用户组 -
用户与账户是同一概念,用于登录系统与区分资源权限
-
用户让系统变得更安全,同时也保护了用户的个人数字资产
-
用户组就是将用户分组,隶属用户自动拥有组权限
-
一个用户可隶属于多个组,用户可以任意切换当前组
-
用户组的出现让用户权限变得更轻松
命令 | 用途 |
---|---|
useradd |
创建新用户 |
passwd |
修改密码 |
usermod |
修改用户信息/分配组(覆盖原组) |
groupadd |
创建新的用户组 |
groups |
查看当前用户所在用户组 |
chown |
更改文件的属主或属组(所有权) |
chmod |
更改文件的访问权限 |
newgrp |
切换用户当前组 |
文件权限代码表
# 改变指定目录的属主以及所对应的用户组
# 更改权限 负责人账户:组名 目录名
chown d1:developer dev-document
# 改变对应文件或目录的权限
chomd 750 dev-document/
chmod命令
chmod 750
组用户可读写,其他用户不允许访问chmod 777
所有用户拥有完整的权限chmod 700
只有属主拥有完整权限
sudo获取超级管理员权限
- sudo可以让普通用户拥有超级管理员的权限
- 普通用户要经过超级管理员授权才能使用
- 授权命令:
visudo
$ visudo
# 跳转到100行 添加用户 (100gg 快速定位)
$ test ALL=(ALL) ALL
# 修改后执行格式检查
$ visudu -c
谨慎使用 sudo
谨慎使用 sudo
谨慎使用 sudo
firewall防火墙设置
防火墙是借助硬件和软件对内外部网路环境的保护措施
CentOS 7基于firewall实现应用层防火墙,CentOS6基于iptables
firewall-cmd
是firewall的核心命令
# 查看防火墙运行状态
$ firewall-cmd --state
# 查看当前开放端口
$ firewall-cmd --list-ports
# 增加放行端口(zone"区域" permanent"永久变更" --add-port"增加新的端口规则")
$ firewall-cmd --zone=public --permanent --add-port=8080/tcp
# 将防火墙进行配置重载
$ firewall-cmd --reload
# 移除方形端口
$ firewall-cmd --zone=public --permanent --remove-port=8080/tcp
# 放行区域端口
$ firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp
Bash Shell
Shell是一 个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁
Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以
.sh
后缀
Shell种类 | Shell解释器 |
---|---|
Bourne Shell |
/usr/bin/sh或/bin/sh |
Bourne Again Shell |
/bin/bash/(默认) |
C Shell |
/usr/bin/csh |
K Shell |
/usr/bin/ksh |
Shell for Root |
/sbin/sh |