安装
第三方脚本
语言参考
基础语法 变量 常量 数据类型 表达式 运算符
流程控制 自定义函数
面向对象相关 命名空间 枚举
错误和异常
纤程和生成器
注解
预定义变量 异常 接口
上下文(Context)选项和参数 支持协议和封装协议
安全和特点
session cookie
文件上传处理
连接处理 数据库持久连接
引用的解释 垃圾回收机制
操作系统
基础语法 变量 常量 数据类型 表达式 运算符
流程控制 自定义函数
面向对象相关 命名空间 枚举
错误和异常
纤程和生成器
注解
预定义变量 异常 接口
上下文(Context)选项和参数 支持协议和封装协议
session cookie
文件上传处理
连接处理 数据库持久连接
引用的解释 垃圾回收机制
sudo apt update && sudo apt upgrade
Software && updates => Additional Drivers 一般N
如果没有合适的去官网下载,出现卡顿等问题也可以装一下显卡驱动试试
sudo apt install nvidia-utils-530
安装N卡显示设置
sudo apt install nvidia-settings
切换显卡
可以通过指令切换 nvidia|intel|on-demand|query
sudo prime-select nvidia # select nvidia gpu
sudo prime-select intel # select intel gpu
sudo prime-select on-demand # on-demand 按需
sudo apt install gnome-tweak-tool
#ubuntu22.04
sudo apt install gnome-tweaks
sudo apt install chrome-gnome-shell #需要安装chrome浏览器
sudo apt install gnome-shell-extensions
开启关闭gnome-shell-extensions
安装dash to dock 和 TopIcons Plus 和 Drop Down Terminal
版本未更新时替代品
Dash to Dock for COSMIC (替代 dash to dock ) ddterm (替代Drop Down Terminal ) TopIconsFix (替代 TopIcons Plus)
打开上述网站,搜索并安装扩展
设置为打开即可,如上图
dash to dock 配置截图
启用Dash To Dock 后 禁用ubuntu dock,否则会导致indicator-sysmonitor插件报错
dock尺寸
图标尺寸
isloate workspace 隔离工作空间 isloate monitors 隔离显示器
ddterm
Panel Icon : none 隐藏顶部栏图标
TopiconsFix
Tray horizontal alignment (托盘图标水平对齐) right
Ubuntu AppIndicators
Tray horizontal alignment left (托盘水平左对齐)可以解决一些应用菜单无法推出的情况
gnome出现问题,可以尝试重新安装
sudo apt-get install --reinstall ubuntu-desktop
gnome控制中心设置失效可以重新安装
sudo apt install gnome-control-center
打开文件 /etc/sysctl.conf,增加以下设置
#该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除
net.ipv4.tcp_max_tw_buckets = 20000
#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数
net.core.somaxconn = 65535
#对于还未获得对方确认的连接请求,可保存在队列中的最大数目
net.ipv4.tcp_max_syn_backlog = 262144
#在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 30000
#能够更快地回收TIME-WAIT套接字。此选项会导致处于NAT网络的客户端超时,建议为0
net.ipv4.tcp_tw_recycle = 0
#系统所有进程一共可以打开的文件数量
fs.file-max = 6815744
#防火墙跟踪表的大小。注意:如果防火墙没开则会提示error: "net.netfilter.nf_conntrack_max" is an unknown key,忽略即可
net.netfilter.nf_conntrack_max = 2621440
运行 sysctl -p
即可生效。
设置系统打开文件数设置,解决高并发下 too many open files
问题。此选项直接影响单个进程容纳的客户端连接数。
Soft open files 是Linux系统参数,影响系统单个进程能够打开最大的文件句柄数量,这个值会影响到长连接应用如聊天中单个进程能够维持的用户连接数, 运行ulimit -n
能看到这个参数值,如果是1024,就是代表单个进程只能同时最多只能维持1024甚至更少(因为有其它文件的句柄被打开)。如果开启4个进程维持用户连接,那么整个应用能够同时维持的连接数不会超过4*1024个,也就是说最多只能支持4×1024个用户在线可以增大这个设置以便服务能够维持更多的TCP连接。
Soft open files 修改三种方法:
第一种:在终端直接运行 ulimit -HSn 102400
,然后重启workerman。
这只是在当前终端有效,退出之后,open files 又变为默认值。
第二种:在/etc/profile
文件末尾添加一行 ulimit -HSn 102400
,这样每次登录终端时,都会自动执行。更改后需要重启workerman。
第三种:令修改open files的数值永久生效,则必须修改配置文件:/etc/security/limits.conf
. 在这个文件后加上:
* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000
这种方法需要重启机器才能生效。
开启BBR算法
参考
GOOGLE 2016年出的TCP拥塞控制算法,解决问题提高网络吞吐量,案例Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%
BBR不会将丢包视为拥塞信号,这会导致高重传率的保持,如果传递的内容对丢包敏感,那么BBR可能不是一个好选择,这种情况下,内容提供商需要仔细检查吞吐量和体验质量之间的权衡
BBR的公平性存在问题,它会抢占Cubic算法的带宽(取决于瓶颈缓冲区的大小)
如何开启BBR
使用laravel本地存储文件时,通常存放到public磁盘,即根目录下storage/app/public
执行命令 创建软链接后才可以通过公共访问文件
php artisan storage:link
laravel 7以上自定义软链接目录
项目迁移更换服务器后,磁盘的挂载目录变了,导致软链接路径不能生效了需要更新软连接
方法一
通过ln命令更新
ln –snf [新的源文件或目录] [目标文件或目录]
方法二
使用php artisan storage:link命令重新生成,首先要删除原先的软链接目录,删除软链接时一定要注意路径后边不能带/
cd /laravel根目录/public
rm -rf storage 正确的删除软链接方式
rm -rf storage/ 错误的删除软链接方式,会删除软链接对应的真实目录导致文件丢失
平均负载是指单位时间内,系统处于可运行状态(R 状态 Running 或 Runnable)和不可中断状态(Uninterruptible Sleep,也称为 Disk Sleep) 的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系
进程状态
linux中断机制
参考
操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。
为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即打断操作系统和应用的正常执行,让操作系统完成外设的相关处理,然后在恢复操作系统和应用的正常执行。
当CPU收到中断或者异常的事件时,它会暂停执行当前的程序或任务,通过一定的机制跳转到负责处理这个信号的相关处理例程中,在完成对这个事件的处理后再跳回到刚才被打断的程序或任务中
硬中断
由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
软中断
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
buff/cache
过高时会导致物理内存占用过高
Swap交换分区
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中
虚拟内存
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
什么是 DDoS 攻击?-知乎
DDoS话题 -知乎
DDOS百度百科,ddos在传输层使用各种方式,挤兑占用服务器资源,造成正常用户无法访问。
CC攻击百度百科,cc攻击是ddos攻击的一种方式,在应用层,使用代理方式对服务器资源进行占用挤兑,造成正常用户无法访问。
防御
DDOS 攻击的防范教程 – 阮一峰
付费产品
kail linux 渗透测试专用操作系统
渗透测试
https://github.com/GoVanguard/legion
https://github.com/secforce/sparta
sqlmap sql注入扫描工具
DNSLog
是一种回显机制,攻击者可以通过DNS的解析日志来读取漏洞执行的回显结果。
http://www.dnslog.cn/
http://ceye.io
参考
Linux – kthreaddi 进程导致CPU超高问题 处理记录
第一次处理
使用参考链接2方式,清除了定时任务,kill -s 9 进程之后正常了。由于同事离职没有收到反馈并继续观察。
第二次处理
后续接手项目,发现又有了继续按原方法清理定时任务,发现一条特别的定时任务,路径在/data/wwwroot/default/phpmyadmin 下,[kthreaddi]进程用户是www可能是通过php web方式注入的。看了一下使用oneinstack脚本后没有删除默认工具目录,于是删除default目录。然后禁用nginx默认虚拟主机使其无法通过ip访问,使用安全组关闭其他端口只开放常用端口。
kill 进程,发现没有用还是会自动重启,看了参考链接1的方式,得到灵感猜想可能有另一个进程负责重启[kthreaddi]进程。使用netstat -ltnp命令发现了一个非法进程监听 52281端口
于是kill 掉 非法进程,然后kill 掉 [kthreaddi] 进程,top命令观察发现正常了。
总结
此类木马通过定时任务重启,也可能结合systemd 或init脚本开机自启, 也可能使用其它伪装的正常进程来重启
延展阅读,更复杂案例top查看不到进程