一、问题描述 接到报警信息如下:说我们服务器6379存在攻击行为。 📷 二、问题原因 1、研发人员,在服务器上安装了redis服务,供测试使用,没有设置密码. 2、第二天客户删掉了redis服务,但是不好意思,服务器已经中招。 3、黑客利用redis无密码,获取了服务器权限,种了木马进行挖矿。 📷 三、处理流程 1、接受到报警后,直接登录服务器,发现服务器已经不能进行远程登录了 2、只能登录到腾讯云平台,控制台进行登录 登录后,检查服务器ssh服务和防火墙,发现都是正常的。理论上可以进行ssh的。不知道是什
pidstat 是著名的采集软件 systat 的组件之一。用于监控全部或指定进程的 CPU、内存、线程、设备 IO 等系统资源的占用情况。
云服务器一段时间没使用就经常能发现存在挖矿病毒,也不知道怎么进来的。也不知道各种云服务商干啥去了,一般能本地使用电脑还是不建议使用云服务器。
Linux的进程排查总体思路和windows的不会偏差太多,具体到细则上存在差异,今天就和师傅们来探讨下Linux下的进程分析及排查。
扩展:上面的表格中提交到了一个cpu数量,那cpu数量是什么呢?linux系统中如何查看cpu的数量呢? 方法一:使用cat命令查看/proc/cpuinfo;再列出的信息当中我可以需要查看两个关键词,processor、physical id 。processor代表本机的cpu核数,如果是2,代表是4核cpu。physical id 是查看本机有几颗物理cpu。 方法二:使用lscpu查看cpu信息。
服务器上有一个任务进程,当我们使用ps -ef | grep task查看时,只能得到一些最基本的信息,假如我们需要知道对应的文件路径、启动命令的完整路径,就无从下手了。
那时刚写公众号,当时记录的学习笔记,现在看来,之前记录的有一个错误的地方,当时也没察觉到。
top 命令 是每个人都在使用的用于 监控 Linux 系统性能 的最好的命令。你可能已经知道 top 命令的绝大部分操作,除了很少的几个操作,如果我没错的话,批处理模式就是其中之一。
CPU使用率是性能测试是一项重要指标,CPU占用过高会使得设备运行程序出现卡顿与发热,甚至出现应用程序Crash,影响用户体验。在排除硬件环境的限制下,应用程序应该尽可能少的占用CPU。
线上故障主要会包括 CPU、磁盘、内存(含JVM)以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。 基本上出问题就是 df、free、top、jstack、jmap具体问题具体分析
由于我这边服务器是非常低配置的,经常操作一下就会引起某些进程重启的情况,于是我怀疑是持久化出问题了
我们有时可能需要在远程机器上运行一些命令。如果只是偶尔进行的操作,要实现这个目的,可以登录到远程系统上直接执行命令。但是每次都这么做的话,就有点烦人了。既然如此,有没有摆脱这种麻烦操作的更佳方案?
原文地址:https://time.geekbang.org/column/article/70476 对应的github地址:https://github.com/feiskyer/linux-perf-examples/blob/master/nginx-short-process/README.md
最近在极客时间学习了倪朋飞老师的《Linux性能优化实战》专题,里面讲到了linux的平均负载这个概念。也就是load average。现在谈谈对平均负载的理解,并整理为笔记。
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
2021 年 12 月 7 日,SonicWall 为其安全移动访问 (SMA) 100 系列发布了新固件。SonicWall 于 2022 年 1 月 11 日发布安全公告,通知用户 12 月发布了 Rapid7 发现的已修复安全问题。最关键的问题是 Web 界面中未经身份验证的基于堆栈的缓冲区溢出,允许远程攻击者以nobody用户身份执行任意代码。该漏洞的编号为 CVE-2021-20038,CVSS 评分为9.8。
为了保证 安全性 & 独立性,一个进程 不能直接操作或者访问另一个进程,即Android的进程是相互独立、隔离的
Binder 跨进程通信机制 模型 基于 Client - Server 模式
Android是如何实现跨进程通信的,大家熟悉的Binder是什么,怎么设计的,进程间的数据如何发送接收的。本文将以及解析,并对Binder驱动实现、Native层实现、Java层实现三块做一个总结分析。
在谈Android的跨进程通信问题上时,总会问到Android的IPC机制,是指两个进程之间进行数据交换的过程。按操作系统的中的描述,线程是CPU调度最小的单元,同时线程是一种有限的系统资源,而进程是指一个执行单元,在PC和移动设备上指一个程序或者一个应用。
说明1:Client进程、Server进程 & Service Manager 进程之间的交互 都必须通过Binder驱动(使用 open 和 ioctl文件操作函数),而非直接交互
总结: 我们已经知道有这 5 个进程了,并且他们的优先级都列出来的,这样我们就可以根据优先级来让我们的 APP 尽量不被杀死了。
我们在Activity.onCreate甚至更早的Application.onCreate里面就可以调用Binder机制了,这说明应用启动Binder比Application的生命周期更早。
这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。
毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。
Binder驱动有很多小的细节,目的就是提升Binder通信的效率。比较典型的是两个机制,因为没有官方名词,我对这两种机制起个名字:"线程栈复用"和"远程转本地"。前者是为了减少线程消耗,后者是为了减少跨进程次数。这篇文章就是介绍"线程栈复用",以后我们再讲"远程转本地"。
之前一直对 Binder 理解不够透彻,仅仅知道一些皮毛,所以最近抽空深入理解一下,并在这里做个小结。
张大朋(Lunar)Oracle 资深技术专家 Lunar 拥有超过十年的 ORACLE SUPPORT 从业经验,曾经服务于ORACLE ACS部门,现就职于 ORACLE Sales Consultant 部门,负责的产品主要是 Exadata,Golden Gate,Database 等。 我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启。 但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办? 我们只能尝试手
这次我们来聊一聊系统相关服务,比如Zygote启动原理,SystemServer启动原理,如何进行添加一个系统服务等。
先复制一段来自于android官方文档的文字 https://source.android.google.cn/devices/architecture/hidl/binder-ipc
1、Android中多进程是指一个应用中存在多个进程的情况,因此这里不讨论两个应用之间的情况,首先在Android中使用多进程只有一种方法,那就是给四大组件指定android:process。默认进程名是包名。
用AIDL的人应该都知道下面代码中start和stop方法定义成oneway代表这个Binder接口是异步调用。
目前linux支持的IPC包括传统的管道、System V IPC、即消息队列/共享内存/信号量,以及socket中只有socket支持Client-Server的通信方式
在之前做过 Nginx 热升级的演示,他能保证nginx在不停止服务的情况下更换他的 binary 文件,这个功能非常有用,但我们在执行 Nginx 的 binary 文件升级过程中,还是会遇到很多问题,比如老的 worker 进程一直退不掉或者新的 worker 进程升级以后出现问题需要考虑回滚,或者升级新的 Nginx 文件以后会发现预期的功能或者指向的配置文件出现了错误,下面我们来看下看热升级的流程是怎样进行的?
Activity是一个组件,组件的启动是要通过AMS的,和Application的启动一样,Activity的启动也会涉及到AMS、Zygote以及应用进程之间的socket通信以及Binder调用。
大家都知道App进程是AMS通过通过Socket通信通知Zygote孵化出来的,借用gityuan的图就是图中的第2步,能否用Binder通信替换Socket通信?我们只讨论技术上实现的可能性,不讨论两者性能上的差异。
主要是驱动设备的初始化(binder_init),打开 (binder_open),映射(binder_mmap),数据操作(binder_ioctl)。
双进程守护拉活 , 使用 JobScheduler 拉活 和 系统 Service 机制拉活 两种拉活方式 , 结合起来使用 ;
最近在使用镜像队列的过程中遇到了一些坑,通过阅读相关源码,大量的测试,不敢说对其中的原理掌握得非常透彻, 但基本能分析定位问题的原因,并且能自圆其说。这里整理总结下, 方便后续的回溯。欢迎大家交流指正。
IPC方法总是产生客户/服务端模式的调用,也即是客户端组件(Activity/Service)持有服务端Service的组件,只能是客户端主动调用服务端的方法,服务端无法反过来调用客户端的方法,因为IPC的另一端Service无法获取客户端的对象。
init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS发起socket请求。
首先,Android利用Binder进行通信的话,肯定要首先获取Binder对象。
在 Kubernetes 中,Pod 停止时 kubelet 会先给容器中的主进程发 SIGTERM 信号来通知进程进行 shutdown 以实现优雅停止,如果超时进程还未完全停止则会使用 SIGKILL 来强行终止。
为了保护进程空间不被别的进程破坏或者干扰,Linux中的进程是相互独立的,也就是所谓的进程隔离。(而且一个进程的内存空间还被分为了用户空间和内核空间,二者也是相互隔离的。这里不做探讨)所以在Linux中,进程与进程之间是相互隔离的,而且进程中的用户和内核空间也是隔离的。
最近有在项目中用到高德的定位SDK,功能是每隔一定的时间获取一次用户的地理位置,采取的方案是在后台开启一个 Service,监听高德地图的位置变化。
领取专属 10元无门槛券
手把手带您无忧上云