0
点赞
收藏
分享

微信扫一扫

[Linux]Linux 基础知识、常用命令和 Shell 脚本

夹胡碰 2022-04-13 阅读 118

一、Linux

1. Linux 的应用领域及介绍

在这里插入图片描述

2. 网络连接的三种方式

在这里插入图片描述

3. Linux 目录介绍

在这里插入图片描述

目录名描述
/bin(binaries)(/usr/bin、/usr/local/bin)存放常用指令
/boot存放启动 Linux 时使用的一些核心文件,如一些链接文件以及镜像文件
/dev(device)类似 windows 的设备管理器,把所有的硬件用文件形式进行映射
/etc(etcetera)所有系统管理所需要的配置文件和子目录,如 mysql 的 my.conf 配置文件
/home存放普通用户的目录
/lib(library)系统开机时所需要的最基本的动态链接库,类似 windows 下的 .dll 文件,几乎所有的应用程序都会使用到这些共享库
/mediaLinux 系统会自动识别一些设备,如 U 盘、光驱等,当识别成功后,Linux 会把识别的设备挂载到此
/mnt临时挂载别的文件系统,可以将外部的存储挂载到 /mnt/ 上,如共享文件夹
/opt(optional)额外安装的软件包的存放位置,如 oracle 数据库包文件
/proc(process)虚拟的目录,它是系统内存的映射,访问此目录可以获取系统相关信息
/root超级权限者的主目录
/run是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除
/sbin(superuser binaries)(/usr/sbin、/usr/local/sbin)存放系统管理员使用的系统管理程序
/srv存放一些服务启动之后需要提取的数据
/sys这是 Linux 2.6 内核的一个很大的变化,该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs
/tmp(temporary)存放临时文件
/usr(unix shared resources)存放用户的应用程序和文件,类似 windows 下的 program files 目录
/var(variable)存放着不断扩充的东西,如系统日志
/lost + found此目录一般情况下内容为空,当系统非法关机后,自动存放一些文件
/usr/local软件安装的目标目录,一般是通过源码编译方式安装的程序
/selinuxsecurity-enhanced linux,这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放 selinux 相关的文件的

4. vi 和 vim

5. 开机、关机、登录、注销

6. 用户管理

7. 用户、组相关的配置文件

8. 运行级别

级别功能
0关机
1单用户(找回丢失密码)
2多用户无网络服务
3多用户有网络服务
4系统未使用保留给用户
5图形界面
6重启

9. 帮助指令

10. 文件目录指令

键位功能
space下翻一页
enter下翻一行
q退出
ctrl + f下滚一屏
ctrl + b上滚一屏
=输出当前行号
:f输出文件名和当前行号
键位功能
space下翻一页
pagedown下翻一页
pageup上翻一页
/字串向下搜索字串,n:向下查找 N:向上查找
?字串向上搜索字串,n:向上查找 N:向下查找
q退出

11. 日期时间指令

12. 查找指令

13. 压缩和解压

参数功能
-c产生 .tar 打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包 .tar 文件

14. 组管理

15. 权限管理

在这里插入图片描述

字符说明
-普通文件
d目录
l链接(快捷方式)
c字符设备文件,如鼠标、键盘
b块设备,如硬盘

16. 定时任务调度 crond

参数功能
-e编辑 crontab 定时任务
-l查询 crontab 定时任务
-r删除当前用户的所有 crontab 任务
占位符含义范围
第一个一个小时当中第几分钟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 分钟执行一次命令

17. 定时任务调度 at

参数含义
-m当指定的任务完成后,就给用户发送邮件,即使没有标准输出
-Iatq 的别名
-datrm 的别名
-v显示任务将要被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q<队列>使用指定的队列
-f<文件>从指定文件读入任务而不是从标准输入读入
-t<时间参数>以时间参数的形式提交要运行的任务

18. 磁盘分区、挂载

在这里插入图片描述

参数含义
-s指定目录占用大小汇总
-h带计量单位M、K、G
-a包含文件
-c列出明细的同时,增加汇总值
–max-depth=1子目录深度

19. 网络配置

在这里插入图片描述

在这里插入图片描述

20. 进程管理

参数含义
-a显示当前终端的所有进程信息
-u以用户的格式显示进程信息
-x显示后台进程

在这里插入图片描述

名称含义
USER用户名称
PID进程号
%CPU进程占用 CPU 的百分比
%MEM进程占用物理内存的百分比
VSZ进程占用虚拟内存大小(KB)
RSS进程占用物理内存大小(KB)
TT终端名称(缩写)
STAT进程状态
STARTED进程启动时间
TIMECPU 时间
COMMAND启动进程所用的命令和参数
参数含义
S-睡眠
s-该进程是会话的先导进程
N-进程优先级比普通优先级更低
R-正在运行
D-短期等待
Z-僵死进程
T-被跟踪或被停止

21. 服务管理

参数功能
-d 秒数指定 top 命令刷新频率,默认为 3s
-i不显示闲置或僵死的进程
-p指定进程号来动态监控某个进程的状态

22. rpm 和 yum

23. 搭建 JavaEE 环境

  1. 安装配置 Oracle Java 8

  2. 安装配置 tomcat8

  3. 安装配置 MySQL5.7

24. Shell 编程

在这里插入图片描述

#!/bin/bash
# 定义变量A
A=100
echo A=$A
# 撤销定义变量A
unset A
echo A=$A
# 定义静态变量B,不可 unset
readonly B=200
echo B=$B
#!/bin/bash
# 依次输出每一个参数变量
echo args0=$0
echo args1=$1
echo args2=$2
# 整体输出所有参数
echo args=$*
# 区别输出所有参数
echo args_=$@
# 输出参数个数
echo args_nums=$#
符号功能
=字符串比较是否相等
-lt小于
-le小于等于
-eq等于
-gt大于
-ge大于等于
-ne不等于
-r有读权限
-w有写权限
-x有执行权限
-f文件存在并且是一个常规文件
-e文件存在
-d文件存在并且是一个目录
# 分支格式
#!/bin/bash
if [ "ok" = "ok" ]
then 
    echo "equal"
elif[ "lcx" = "lcx" ]
    echo "not equal"
else
	echo "quit"
fi

# case 语句
#!/bin/bash
case $1 in
"1")
echo "Monday"
;;
"2")
echo "Tuesday"
;;
*)
echo "other"
;;
esac

# for 循环 1
#!/bin/bash
# $* 将命令行参数看作一个整体,所以 for 循环只执行一次
for i in "$*"
do
        echo "args is $i"
done
echo "==========="
# $@ 区别对待各个命令行参数,所以有几个参数 for 循环执行>几次
for j in "$@"
do
        echo "args is $j"
done

# for 循环 2
#!/bin/bash
SUM=0
for(( i=1; i<=$1; i++))
do
        SUM=$[ $SUM+$i ]
done
echo "sum = $SUM"

# while 循环
#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[ $i+1 ]
done
echo "The result is $SUM"

# read 读取输入
#!/bin/bash
# 读取控制台输入的一个值
read -p "Please input a number:" NUMBER
echo "The number that you entered is $NUMBER"
# 读取用户 10s 内输入的一个值
read -t 10 -p "Please input a number:" NUMBER1
echo "The number you entered is $NUMBER1"
#!/bin/bash
# Define the funtion
function getSum() {
        SUM=$[$n1+$n2]
        echo "Sum is $SUM"
}

read -p "Input the first number:" n1
read -p "Input the second number:" n2

# Call the function
getSum $n1 $n2

25. Shell 之定时备份数据库

# 每天凌晨 2:30 定时备份指定的数据库,同时检查 10 天前的备份文件是否存在,存在则删除
DIRECTORY=/data
DATETIME=$(date +%Y%m%d%H%M%S)
DB_HOST=localhost
DB_USER=root
DB_PWD=2020@mywife
DB_NAME=mine

# If the save directory not exists, then create it
[ ! -d "${DIRECTORY}/${DATETIME}" ] && mkdir -p "${DIRECTORY}/${DATETIME}"

# Backup the database
mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PWD} ${DB_NAME} > ${DIRECTORY}/${DATETIME}/${DB_NAME}.sql

# Compress the backup file
cd /${DIRECTORY}
tar -zcvf ${DIRECTORY}/${DATETIME}.tar.gz ${DATETIME}
rm -rf ${DIRECTORY}/${DATETIME}

# Delete the file that existing more than 10 days
find ${DIRECTORY} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "Backup databse named ${DB_NAME} successfully"

# 定时调用脚本
crontab -e
30 2 * * * /home/bash/backup_mysql_mine.sh

26. apt 和 ssh 远程登录

命令功能
sudo apt-get update更新源
sudo apt-get install package安装包
sudo apt-get remove package删除包
sudo apt-cache show package获取包的相关信息
sudo apt-get source package下载该包的源代码
sudo apt-cache search package搜索软件包
sudo apt-get install package --reinstall重新安装软件包
sudo apt-get -f install修复安装
sudo apt-get remove package --purge彻底删除包,包括配置文件等
sudo apt-get build-dep package安装相关的依赖环境
sudo apt-get upgrade更新已安装的包
sudo apt-get dist-upgrade升级系统
sudo apt-cache depends package查询该软件包所依赖的包
sudo apt-cache rdepends package查询该包被那些包依赖
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

27. 日志管理

日志文件说明
/var/log/boot.log系统启动日志
/var/log/cron记录与系统定时任务相关的日志
/var/log/lasllog记录系统中所有用户最后一次的登录事件的日志。二进制文件,需使用 lastlog 命令查看
/var/log/mailog记录邮件信息的日志
/var/log/message记录系统重要消息的日志。系统出现问题时检查首选
/var/log/secure记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录
/var/run/ulmp记录当前已经登陆的用户信息。此文件随用户登录、注销不断变化,只记录当前登录用户的的信息。需使用 w、who、users 等命令查看
/var/log/cups记录打印信息的日志
/var/log/dmesg记录了系统开机时内核自检的信息。可使用 dmesg 命令直接查看内核自检信息
/var/log/btmp记录错误登录的日志。二进制文件,需使用 lastb 命令查看
/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的启动、重启关机事件。二进制文件,需使用 last 命令查看
关键字说明
auth##pam产生的日志
authpriv##shh、ftp等登录信息的验证信息
corn##时间任务相关
kern##内核
lpr##打印
mail##邮件
mark(syslog)-rsyslog##服务内部信息,时间标识
news##新闻组
user##用户程序产生的相关信息
uucp##unix to unix copy 主机之间相关的通信
local 1-7自定义的日志设备
关键字说明
debug##有调试信息的,日志通信最多
info##一般信息日志,最常用
notice##最具有重要性的普通条件的信息
warning##警告级别
err##错误级别,阻止某个功能或模块不能正常工作的信息
crit##严重级别,阻止整个系统或整个软件不能正常工作的信息
alert##需要立即修改的信息
emerg##内核崩溃等重要信息
none##什么不记录
参数含义
daily轮替周期是天
weekly轮替周期是周
monthly轮替周期是月
rotate digit保留的日志文件的个数。0 指没有备份
compress旧的日志文件进行压缩
create mode owner group建立新的日志文件同时指定新日志的权限、所有者、所属组
mail address日志轮替时,发送内容到指定邮件地址
missingok如果日志不存在,则忽略该日志的警告信息
notifempty如果日志为空文件,则不进行日志轮替
minsize size日志轮替的最小值
size 大小大于指定大小才轮替,而不是按照时间轮替
dateext使用日期作为日志轮替文件的后缀
sharedscripts在此关键字之后的脚本只执行一次
prerotate/endscript在日志轮替之前执行脚本命令
postrotate/endscript在日志轮替时候执行脚本命令

28. 内核升级

29. Linux 系统备份与恢复

30. webmin 和 bt 运维工具

举报

相关推荐

0 条评论