前言
笔者根据尚硅谷经典Linux教程(千万级学习人次,linux最新升级版) 学习并取其精华整理,以备日后忘掉。
本文档 足以应付日常工作中80%的基础Linux的使用和速查(善用ctrl + f 查找你忘记的命令),如果你是专业Linux运维请移步;
下附学习中整理的两张高清思维导图,如有需要可自取。谢谢大家!
Linux基础笔记整理
Shell基础笔记整理
Linux篇
一、最常用的基本命令
-
cp 复制命令
-
mv 移动 重命名
- mv 要复制的目录(包含子目录) 要复制的目的地
- mv 原名 新名
-
cat 查看文件命令
-
> 指令 和 >> 指令
-
> 指令(内容覆盖)
- 例:
ls > a.txt -
>> 指令(内容追加)
- 例:将一行文字追加到a.txt中
echo 一行文字 >> a.txt -
echo 指令
- 输出命令到控制台,常用于Shell脚本,类似于C语言的printf
-
head 指令
-
tail指令
-
tail -5 文件名 ——— 输出文件尾5行字 -
tail -f 文件名 ——— 输出日志!极常用 -
history 查看历史指令
二、Vim编辑器
三种常用模式:正常模式,插入模式,命令行模式
常用命令 | 解释 | 举例 |
---|
yy | 拷贝当前行 | 5yy 拷贝光标以下5行 | p | 粘贴 | | dd | 删除当前行 | 5dd 删除光标以下5行 | G | 去最末行 | 5G 去第5行 | gg | 去最首行 | | u | 撤销(undo) | | ctrl + r | 重做 (redo) | | ctrl + b | 向后翻页(back) | | ctrl + f | 向前翻页(front) | |
-
2、插入模式 一般就使用 i 就可以了! -
3、命令行模式
-
命令行模式常用操作:
- w 写入
- q 退出
- wq 保存退出
- q! 强制退出(不保存)
-
命令行模式常用技巧
-
查找关键字
- /关键字 【回车】(按回车查找)
- 输入n(next的简称),光标跳到下一个查找到的地方
- 输入N 光标跳到上一个查找到的地方
-
设置行号
三、用户管理
-
创建新用户
-
删除用户
-
查询用户信息
- id 用户名
-
切换用户
-
用户组
-
用户和组的相关配置文件
四、运行级别
-
级别列表:
-
0:关机 -
1:单用户 -
2:多用户无网络 -
3:多用户有网络(大多数情况) -
5:图形界面 -
6:重启 -
级别的配置文件
-
切换到指定运行级别
五、常用目录结构
-
/bin 存放着最经常使用的命令(ls cat等都在这)(/usr/bin 、/usr/local/bin ) -
/sbin s为superuser的意思存放着系统管理员使用的系统管理程序(/usr/sbin、 /usr/local/sbin) -
/home 存放普通用户的主目录一般该目录是以用户账号命名 -
/root 超级管理员的主目录 -
/lib 类似windows的dll文件动态链接库 -
/lost+found 系统非法关机后存放的文件 -
/etc 系统管理需要的配置文件和子目录
- /etc/profile (是一个文件,不是目录) 存放着配置文件
-
/usr 应用程序安装目录,用户文件目录类似于win的program files目录安装的程序绝大多数都在这个目录下
- /usr/local 额外软件安装目录(一般是通过编译源码方式安装的)
-
/boot 启动Linux时的核心文件 -
/dev 类似于win的设备管理器,将所有硬件用文件形式存储 -
/var 存放着不断扩充的东西,日志文件常常放在这里 -
/opt 用户级的程序目录 用于放置第三方大型软件或者游戏
六、常用搜索查找类指令
七、压缩&解压缩
八、组管理和权限管理
-
查看权限
-
输入ll后,会看见文件的权限:
-
第一个字母代表文件的类型:如果是一个普通文件为"-",如果是一个目录为"d", -
剩下9个,以3个为一组看:
- 第一组表示文件所有者拥有的权限
- 第二组表示该文件所在组的用户,拥有的权限
- 第三组表示其他组的用户所拥有的权限
-
每一组都有一个rwx:r可读,w可写,x可执行(可打开目录) -
举例:drwxr-xr-x
- 1、该文件是一个目录(d)
- 2、文件所有者可读可写可打开
- 3、该文件所在组用户只可读可打开
- 4、其他组用户只可读可打开
-
root用户创建的文件或者文件夹,其他用户很有可能不能写入(只读)! -
修改文件或目录权限 指令: chmod
-
方法1: u 所有者权限,g 同组权限,o 其他组用户权限 例1:chmod u=rwx,g=rwx,o=rwx text.txt 意为给text.txt所有用户最高权限 例2:chmod u=rwx,g=r--,o=r-- text.txt 意为给text.txt 同组用户、其他用户只读权限,给所属用户最高权限 -
方法2(强烈推荐): 根据:r=4,w=2,x=1,它们相加可以对权限进行组合,得到不同的权限(可写可执行3;只读 4;可读写 6;最高权限7) 所以修改权限的命令可以简化成: 实现上面例1的相同功能(给text.txt所有用户最高权限): chmod 777 实现上面例2的相同功能(同组用户、其他用户只读权限,给所属用户最高权限): chmod 744 -
修改文件所有者和所有组指令:chown
-
命令: chown newowner:newgroup file -
newowner 所有者; newgroup 所有组 -
-R 递归修改所有子文件和子目录 -
例:chown daji:group1 -R daji 递归修改daji目录的所有文件的 所有者和所有组为root和root组
九、任务调度(定时任务)
十、进程管理
-
ps 命令查看进程
-
top指令
-
kill 命令 杀死进程
-
kill 参数 进程号
-
killall 进程名称根据名称过滤,支持通配符
-
服务管理
-
监控网络状态netstat、ping
-
命令:netstat 选项 选项如下:
-
-an 按一定顺序排列输出 –p 显示哪个进程在调用 基本上连用,比如:netstat -anp -
例:netstat -anp | grep 8080 极为常用,查看你8080端口被谁占用了,这时候就能得到pid,然后根据pid杀死该进程 -
例:netstat -anp | grep java 查看java进程占用的端口 -
命令: ping IP地址 测试网络通不通
十一、RPM包管理、yum(安装软件常用)
Shell篇
一、快速入门
二、Shell的变量
三、Shell运算符
四、自定义函数
语法:
[ function ] funname[()]
{
Action;
[return int;]
}
例:编写自定义函数,计算两数之和:
function getSum(){
SUM=$[$num1+$num2]
echo "和是=$SUM"
}
num1=8
num2=6
getSum $num1 $num2
五、Shell常用系统函数
六、判断、循环和流程控制
-
判断语句
-
循环语句
-
for循环 基本语法(for循环的条件比较可以用 < > = ): for(( 初始值;循环控制条件;变量变化 ))
do
程序
done
-
while循环 基本语法:(while 和 [] 之间必须有空格)
七、Shell综合案例:
任务目标:
- 1、每天凌晨2:10备份数据库dajiDB到/root/shell/backupDB 这个文件夹中
- 2、备份开始和备份结束能够给出相应的提示信息
- 3、备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如:
2018-03-12_ 230201.tar.gz - 4、在备份的同时,检查是否有2天前备份的数据库文件,如果有就将其删除。
Shell代码如下:
#!/bin/bash
BACKUP=/root/shell/backupDB
DATETIME=$(date +%Y_%m_%d_%H%M%S)
echo "=============开始备份=================================="
echo "==========备份的路径是:$BACKUP/$DATETIME.tar.gz=============="
HOST=localhost
DBUSER=root
DBPWD=root
DATABASE=dajiDB
if [ ! -d "$BACKUP" ]
then
echo "$BACKUP目录不存在,现在创建该目录"
mkdir -p "$BACKUP"
fi
mysqldump -u$DBUSER -p$DBPWD --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME.sql.gz
echo "已建立并压缩名为$BACKUP/$DATETIME.sql.gz的sql文件"
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME.sql.gz
echo "已经将$DATETIME.sql.gz 打包成 $DATETIME.tar.gz 格式"
rm -rf $BACKUP/$DATETIME.sql.gz
echo "已删除名为$BACKUP/$DATETIME.sql.gz的sql文件"
find $BACKUP -mtime +2 -name "*.tar.gz" -exec rm -rf {} \;
echo "============备份文件成功============="
将这个Shell脚本放置在crond任务调度队列中,定时执行(每天凌晨2:10):
- 在终端执行命令:
crontab -e 启动任务调度 - 编写任务调度文件:
10 2 * * * /root/shell/shellIntegration.sh
完成!
总结
看到这里,应该就可以对Linux和Shell做到一个基本的认知了。但也只是达到“知其然”的程度,不过对于后端开发来讲,熟记上述命令就足够了。
Linux是一个实操性特别强的技术,想要熟练使用Linux,只能靠多练习和多总结。日后我会更新更多前端/后端/Linux相关技术,如果这篇文章帮到了你,点个关注叭~
|