2023-4-10之前关于linux的学习

linux 常用指令
reboot  whoami  useradd  passwd        groupadd    clear        usermod  tree  rpm安装(-ivh -qai) yum安装        init [0~6]变更linux运行级别(常用3多用户、5图形化界面)   man        help        less查看大文件    head        tail显示文件前/后几行        ln链接  history历史操作    date显示时间    cal显示日历    find查找文件    locate查找符合条件的文件    |grep管道    gzip/gunzip    zip/unzip    tar压缩/解压    chown修改文件所有者和        chgrp修改文件所属组        chmod修改文件权限(权限代码777等)        crontab/at定时任务(周期/一次)  su变更使用linux用户  free常见查看内存    lsof超级工具


lsblk查看设备挂载情况hda3    fdisk创建维护分区表    mkfs格式化分区        mount挂载分区(前三个是挂载过程)    上面一行实现的是临时挂载 如果实现永久的需更改/etc/fstab,再mount

df磁盘使用情况    du目录磁盘使用情况        wc计算字数(也可读标准输入设备)


网络配置

编辑vi /etc/netplan/50-cloud-init.yaml
为什么需要网络配置,自动获取的inet可能每次都不同,再进行操作的时候可能会麻烦

hostname查看主机名(/etc/hostname可以修改)    设计hosts映射,在windows中C:\Windows\System32\drivers\etc\hosts中加入设置的inet 主机名(关于主机名解析机制分析,比如ping域名,先从浏览器缓存中查找对应ip,没有就从本地DNS中查找,还没有就从自己设置的hosts中查找,没有的话最后从公网DNS中查找,在没有就返回域名不存在)(会产生域名劫持的存在,因为公网DNS是最后查找,在此之前如果访问的域名不是公网的,那么就会访问自己规定的ip地址,也就是常见的"无视风险继续访问")


进程管理(程序静态,run后成进程)

ps查看进程(加-ef可以查看父进程,-aux)

kill/killall终止进程 -9表强制 (应用:停止远程登录sshd进程,再适当的时间恢复sshd,恢复方法是/bin/systemctl start sshd.service)
pstree查看进程树
top动态监控进程(其中load-average平均值大于0.7可能需要清理)(交互P(CPU占用)/M(内存使用)/N/q)(输入u然后加用户名,可以实时监控该用户进程,输入k,加9结束进程)(top -d 数字改变刷新时间)
netstat监控网络状态(-n -p -t -l -u)包括端口进程


服务管理
service管理服务(status/start/stop)  setup查看所有服务(包括可以更改自启动)
systemctl get-default查看当前运行级别(3多用户,5图形化界面)
(重要)systemctl设置服务的自启动状态(enable/disable/is-enabled/stop/status/start)
chkconfig让系统再运行某级别时关闭某服务
firework让防火墙打开某端口(应用较多)-cmd --permanent --add/--remove-port=端口号/协议
使生效firework --cmd --reload 查询--cmd --query-port=端口号/协议



shell脚本学习
以 #!/bin/bash 开头,有可执行权限
注意:1.等号两侧不要空格,2.变量最好大写
执行方式: 1.给脚本+x权限,输入路径 2.sh+脚本
用法:
撤销变量unset(静态变量readonly不能)
输出变量echo $变量名
A='xxx'将xxx的结果赋值给A,A=$(date)等价于A='date'
export将变量输出为环境变量/全局变量(被所有文件共享),如export XXX=/etc/tomcat 之后还需source 配置文件 使之生效
多行注释 :<<! 内容 !
位置参数: ./xxx.sh [第一个参数] [第二个] ...
      $数字 表示第几个参数; $* 表示所有参数(整体对待); $@ 表示所有参数(区分对待); $# 参数个数

预定义变量:$$当前进程的进程号 $!后台最后一个进程号 $?为0表示上一个命令正确执行
运算符:$((运算符))|$[运算符]|expr m + n(有空格) 如果要将值赋值需在运算式两侧加''(单引号)(只有expr需要) (运算符不一样的:*改为\*)
条件判断:if []里面加判断条件(注:中括号两边需要有空格) then 语句 elif []  then 语句  fi结束
      判断符号: 字符串:比较= ; 整数比较: 小于lt 小于等于le 等于eq 大于gt 大于等于ge 不等于ne;  权限比较:有xxx的权限r/w/x; 按照文件存在比较:f(文件)/e(文件/文件夹)/d(文件夹)
流程控制(类似于switch):case $变量 in "值1") 语句;; "值2) 语句;; *) 语句;; esac
for循环: 第一种方法for 变量 in 值1 值2... do 语句 done
        第二种方法for (( 初始值;循环控制条件;变量变化++/-- ) do 语句 done
while循环: while [ 条件判断 ](空格!) do 语句 done

获取控制台输入read:-P指定提示符 -t指定等待时间 例: read -P "提示" 变量名
函数:basename返回/最后的部分,常用于获取文件名 最后加参数相当于将文件名中与参数相同的部分删除
        dirname与basename相反,是获取路径
        自定义函数:[ function ] 函数名[()]{   语句;[return xx;]   }    调用就是函数名 [值](中括号中的是选择性写)
用例:备份数据库:参考脚本/usr/sbin/zzzzzzzzzzzzcash.sh

复制代码
#!/bin/bash
# 备份目录
BACKUP=/data/back/up
# 当前时间
DATETIME=${date +%Y%m%d_%H%M%S}
echo $DATETIME
# 如果目录不存在就创建
[ ! -d "${BACKUP}/{DATETIME}" ] && mkdir 
-p "${BACKUP}/{DATETIME}"
# 数据库地址
HOST=localhost
# 数据库用户
DB_USER=root
# 数据库密码
DB_PWD=
# 数据库名
DATABASE=my
# 导出备份数据
mysqldump -u${DB_USER} -p --host=${HOST} -q -R --databases${DATABASE} | grep > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
# 整理成tar.gz
cd ${BACKUP}
tar -zvcf $DATETIME.tar.gz ${DATETIME}
rm -rf ${BACKUP}/${DATETIME}
# 防止文件过多,删除十天前的备份(其中-exec 命令 {} \;是标准格式,表示将前面的结果交给exec后面的命令处理)
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份${DATETIME}成功"
复制代码



远程登录
ssh远程登录(ubuntu默认是没有安装sshd服务,需apt install net-tools) (涉及集群的开发)
在每台服务器上需执行sudo apt-get install openssh-server来安装ssh服务端和客户端


日志管理
日志文件放在/var/log文件夹下,lastlog查看用户最后一次登录,boot.log启动日志,cron定时任务相关,mailog邮件信息,message绝大多数重要信息(包括系统出问题),secure验证和授权(如ssh,su,sudo),ulmp记录当前登录用户信息
rsyslogd日志管理服务(管理所有日志文件)(在操作linux时先ps查看rsyslogd程序是否启动,也可以systemctl查看自启动),其配置文件在/etc/rsyslog.conf

journalctl内存日志,每次关机清空
自定义日志:在rsyslog.conf中编写如*.*        /var/log/hsp.log    #在hsp.log中记录所有级别的事件
日志轮替(有许多参数):rsyslog.conf配置文件中某项日志有dateext参数,说明该日志有轮替
轮替可以写在/etc/logrotate.conf,也可以单独把某个日志轮替规则写进/etc/logrotate.d/,如果自定义日志轮替建议写在logrotate.d中


虚拟机相关内容:
定制linux
定制虚拟硬盘/挂载/定制指令(不熟练)
linux内核

linux备份和恢复
dump支持分卷备份和差异备份[-0~9(0最全)][-f备份名] restore恢复备份文件四个模式C/i/r/t


linux可视化管理
webmin管理unix/linux:(是一个服务,需要先在linux中启动)
        管理进程,系统日志,mysql服务器,ssh服务,执行命令,IP允许访问,集群管理
bt(宝塔):
        资源负载情况以及网络/磁盘IO,安全情况,计划任务(shell脚本等),mysql管理,防火墙管理,bt default显示密码


部分操作中需要注意的:
再筛选ip地址中的某个字段时需要注意:在筛选完数据需要先|sort再|uniq(统计) -c
cut/awk都是切割字段,只不过cut只能切割单字符
如果mysql密码忘记后,在/etc/my.cnf加入skip-grant-tables,然后进mysql中mysql库中的user表中的authentication_string(密码)字段
tcpdump用来监听某个端口
Nginx服务器常用模块:rewrite重写,access来源控制,ssl安全加密,ngx_http_gzip_module网络传输压缩,ngx_http_proxy_module代理,ngx_http_upstream_module定义后端服务器列表,ngx_cache_purge缓存清除
chattr(锁定文件,日常用于重要文件如/etc/xxx的锁定)(防止有人恶意用chattr解锁,可以将chattr指令mv走,再修改名称)
SUID,SGID,Sticky可以设置特殊权限
防止恶意入侵者使用rootkit脚本,安装chkrootkit来检测
centOS启动流程需再了解
web服务器负载架构:Nginx,Haproxy,Keepalived,LVS
优化linux系统:
高并发问题产生后,优化分为两种:
  1.架构优化:负载均衡(集群)
  2.linux内部优化:网络,磁盘io,文件链接,安全优化,监听端口问题,关掉不必要的服务等;具体规则:不用root用sudo提升权限,cound定时更新服务时间,配置yum源指向镜像网址,配置防火墙控制端口,打开最大文件数(vim /etc/profile ulimit -SHn 65535),配置合理的监控策略,对nginx、apache优化,对内核参数优化(/etc/sysctl.conf),锁定重要文件chattr,禁用不必要的服务setup


posted @   weakxy  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示