但是家里没有找到合适的 U 盘(穷~~),加上前段时间听了同事关于 linux 内核的分享,感慨自己对系统的理解不够。因此我决定使用无盘启动 volumio 顺便研究一下 linux 启动原理。...目标:无盘启动 volumio 系统 0.2 方案 正常 Linux 启动流程大体如下: BIOS 启动,完成自检,选择启动硬件 如果是磁盘系统读取 MBR 从 MBR 指示,找到 GRUB 所在分区,...可以直接通过 Http 协议获取 Linux kernel 和 ramdisk 然后启动 或者加载一块 iscsi 磁盘,将 linux kernel 和 ramdisk 等信息放在 iscsi 磁盘中...它可以提供选单选择 Linux 内核版本,此外加载程序使得我们可以向 Linux 内核传递参数。这点很重要,在我的案例中 volumio 就是通过 Syslinux 向内核传递启动参数的。...7.2 最终效果 7.3 总结 总结:为了省掉一块 U 盘,我开始折腾 iscsi 无盘启动没想到这一折腾就是好久,前后研究了好多资料好好的学习了一下 linux 的启动原理。
程序的加载和运行时间:缩短 150 ms。 整体启动时间:缩短 350 ms。 在空间的优化很大,但是在启动时间上的优化很小,这是因为 Linux 运行程序时只加载程序的必要部分。...启动时间:基本没改变,大概是因为文件系统本身就足够小了。...关闭后,内核缩小:-188 KB (-4.6 %),启动时间缩短 126ms. 禁用 log 启动参数里添加 quiet,启动时间缩短 577 ms。...关闭 sysfs, 启动时间缩短 35 ms。...启动时间缩短 250 ms。
摘要:这次我们来谈谈如何采集一个进程的启动时间 以下内容使用go语言实现 linux 进程启动时间采集 方法一 直接读取/proc/{pid} 文件夹的时间戳方式(不准确但效率高),以下是方法一的代码,...= nil { return nil } proc.mtime = stat.ModTime().Unix() 方法二 使用(现在的时间-从系统启动到现在的时间) + 进程启动时距离系统启动时的时间间隔得到...import "C" import ( "fmt" "io/ioutil" "strconv" "strings" "time" ) var ( Uptime int64 // 系统启动时间戳...启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。...输出结果 [输出结果] 引用 go 获得进程启动时间的两种方法
启动时间的优化,分为两大部分,分别是内核部分和用户空间两大部分。...内核启动优化 在内核源码中自带了一个工具(scripts/bootgraph.pl)用于分析启动时间,这个工具生成output.svg。...nice: 从系统启动开始累计到当前时刻,nice值不为负的进程所占用的CPU时间。 system: 从系统启动开始累计到当前时刻,处于核心态的运行时间,不包括中断时间。...idle: 从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间 iowait: 从系统启动开始累计到当前时刻,IO等待时间 irq: 从系统启动开始累计到当前时刻,硬中断时间 softirq...进程信息:包含进程的父子关系、启动时间、终止时间、运行状态等信息。主要从pro_ps.log中获取。 从下一张图可以看出主要问题在: 由于内核实时进程太多,导致rc启动延迟。
Linux入门002 | 看日期、时间换算和定时作业 前言 在Linux世界里,日期与时间不仅是系统运行的脉络,更是众多命令行操作的核心要素。...无论是追踪日志、管理备份,还是安排定时任务,对日期和时间的精准操控都是提升工作效率的关键。本期文章将揭示Linux指令中与日期相关的实用技巧和魔法般的组合,助您轻松驾驭时间,让命令行工作如虎添翼。...一、获取当前日期与时间 最基础也最常用的日期时间命令是 date。简单执行 date 即可显示当前系统时间: In [31]: !...以下是一些常见操作: 查找最近修改的文件:使用 find 命令结合 -mtime、-ctime 或 -atime 选项,按修改时间、状态改变时间或访问时间筛选文件。...reference_file /home/mw/project/1.txt /home/mw/project/2.txt /home/mw/project/3.txt 四、调度基于日期的任务 计划任务是Linux
相信自己,你90%的错误都可以通过debug自己解决。如果不是,那就尽快让自己成为90%的错误都可以通过debug解决的人。
前言 我相信大家肯定遇到过Activity启动慢的BUG,在优化问题之前,我们都会自我测试一下Activity启动耗时是不是和测试给的数值一样,在我们没有高速相机的情况下,我们如何获得Activity...启动时间。...,整个时间包含onCreate,onResume,doTraversal,一般情况下am_activity_launch_time还是很客观地展现出一个activity启动时间。...但是有时候测试标准不一样,测试标准可能要求是整个界面完全显示出来,尤其是需要异步网络请求数据,后面几帧展现更多UI,对于这个情况,Activity启动时间就要远远大于am_activity_launch_time...但是通过am_activity_launch_time来衡量一个Activity启动时间还是很科学的。
有时需要知道某进程运行的时间,比如我想知道我sra文件转换成fq格式的转化速度。以便我做好时间安排。...-eo pid,tty,user,comm,lstart,etime|grep fastq 参数说明: pid:进程ID tty:终端 user:用户 comm:进程名 lstart:开始时间...etime:运行时间 运行结果如下: 91413 pts/0 root fastq-dump Tue May 21 10:01:44 2019 45:05...进程占用的CPU百分比 %MEM:占用内存的百分比 VSZ:该进程使用的虚拟內存量(KB) RSS:该进程占用的固定內存量(KB)(驻留中页的数量) STAT:进程的状态 START:该进程被触发启动时间...TIME:该进程实际使用CPU运行的时间 top命令 top也可以看进程信息,与ps区别如下 ps看命令执行那刻的进程信息,top是持续监视,ctrl c退出 ps只是查看进程,而top还可以监视系统性能
前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。...所以,笔者就去Linux源码里面,一探究竟。 首先介绍下Linux环境 TIME_WAIT这个参数通常和五元组重用扯上关系。在这里,笔者先给出机器的内核参数设置,以免和其它问题相混淆。...具体问题可以看笔者的以往博客。...但图中并没有指出2MSL到底是多长时间,但笔者从Linux源码里面翻到了下面这个宏定义。...Linux内核是通过时间轮来处理到期的TIME_WAIT socket,如下图所示: 内核将60s的时间分为8个slot(INET_TWDR_RECYCLE_SLOTS),每个slot处理7.5(
部署在linux上的java程序,有时更新了包,忘记了是否执行了重启,此时有必要根据java进程的启动时间和包的更新时间来确定。 1....查看Linux进程的启动时间 # ps axo pid,ppid,comm,pmem,lstart PID PPID COMMAND %MEM STARTED...2 kworker/0:0H 0.0 Wed Oct 6 16:16:53 2021 axo:选项 pid:进程id comm:命令 pmen: 进程占用的内存 lstart: 进程启动时间...根据pid查询java进程的启动时间 # ps axo pid,ppid,comm,pmem,lstart | grep 39230 39230 1 java 4.0 Sat...Mar 12 13:28:50 2022 可以看出对应pid的java进程启动时间为:Mar 12 13:28:50 2022 有时想了解某个java进程运行了多长时间,是否被执行过重启操作,特别是对长时间运行的进程进行跟踪
文章目录 一、 APP 启动白屏 / 黑屏 二、 APP 启动速度测量 1. 通过 Logcat 日志查看应用启动时间 2....通过 adb 命令查看界面启动时间 三、 APP 冷启动与热启动 四、 APP 启动时间计算 一、 APP 启动白屏 / 黑屏 ---- 1 ....四、 APP 启动时间计算 ---- 1 ....分析启动时间计算源码 : ① 计算启动时间源码 : APP 启动时间计算在 \frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java...- stack.mLaunchStartTime) 时间是总时间 , thisTime 是热启动的启动总时间 ; final long totalTime = stack.mLaunchStartTime
大多数 Linux 发行版在默认配置下已经足够快了。但是,我们仍然可以借助一些额外的应用程序和方法让它们启动更快一点。其中一个可用的这种应用程序就是 Preload。...在这篇详细的教程中,我们将去了解如何安装和使用 Preload,以改善应用程序在 Linux 中的启动时间。...在 Linux 中使用 Preload 改善应用程序启动时间 Preload 可以在 AUR 上找到。...因此,你可以使用 AUR 助理程序在任何基于 Arch 的系统上去安装它,比如,Antergos、Manjaro Linux。...因为 SSD 的访问时间比起一般的硬盘来要快的多,因此,使用 Preload 是没有意义的。 Preload 显著影响启动时间。因为更多的应用程序要被预读到内存中,这将让你的系统启动运行时间更长。
看了一下2016年的WWDC关于优化启动时间的PPT,有些感悟和总结,记录一下。...这篇文章你能学到什么 ---- 理论: 我们在进入mian()函数之前发生了什么事情 Mach -O的格式 虚拟内存基础知识 二进制Mach -O怎么被加载和准备 实用部分: 怎么去计算启动时间 优化启动时间...Mach -O、虚拟内存速成课 ---- 主要简单的介绍了Mach -O和虚拟内存的知识,下文在app启动的时会有很多相关的术语,不知道会懵逼。...APP启动 ---- app启动的时候,内核会把app映射到一个新的内存空间,开始地址是随机的。 ? 然后内核通过Dyld来加载动态库。...在可执行文件中调用main() Pre-main() 总结 pre-mian 阶段主要是Dyld做的工作: 深度加载依赖的动态库 修正DATA pages的指针 运行初始化工作 篇幅有限,这边总结了原理,下篇总结启动时间优化相关
在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。...例如进入到刚创建的容器中,并启动一个bash: 可以看到,一个bash终端打开了,在不影响容器内其他应用的前提下,用户可以很容易与容器进行交互。...3、nsenter 工具 在util-linux软件包版本2.23+中包含nsenter工具。...如果系统中的util-linux包没有该命令,可以按照下面的方法从源码安装: $ cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux.../v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24; $ .
文章时间:2020年3月5日 09:59:20 解决问题:系统时间异常,修复系统时间 CentOS系统 yum install ntpdate ntpdate 某个服务器节点 Ubuntu系统
Linux Linux启动流程(了解) 加载BIOS(Basic Input Output System):BIOS是系统启动时加载的第一个软件。...读取主引导分区(MBR):拷贝启动引导代码BootLoader 启动引导代码(bootloader):当我们的硬盘上有多个操作系统时,可以用来选择进入到哪个操作系统。...例如,运行5级别,查找 /etc/rc5.d目录,启动该目录下的相关服务。...当init进入一个运行等级的时候,它会按照数字顺序运行所有以K开头的脚本并传入stop参数,除非对应的init脚本在前一个运行等级中没有启动。...解析用户自定义的启动脚本:/etc/rc.local(如果存在的话) 进入用户界面。
int days = ts /SEC_PER_DAY;//这个时间戳值的年。 int yearTmp = 0;int dayTmp = 0;//使用夹逼法计算 days 天中包含的年数。...if (days >= dayTmp) //条件成立,则 yearTmp 即是这个时间戳值所代表的年数。...{ days-=dayTmp; }else{break; } } year=yearTmp;//这个时间戳值的月 int monthTmp = 0;for (monthTmp = 1; monthTmp...int secs = ts %SEC_PER_DAY;//这个时间戳值的小时数。 hour = secs /SEC_PER_HOUR;//这个时间戳值的分钟数。...secs %=SEC_PER_HOUR; minute= secs /SEC_PER_MIN;//这个时间戳的秒钟数。
主机加电自检,加载BIOS硬件信息 读取MBR的引导文件(GRUB、LILO) 引导Linux内核 运行第一个进程init(进程号永远为1), 进入相应的运行级别 运行终端,输入用户名和密码 开机自检,...MBR引导,加载grub菜单,在grub菜单里面加载kernel,启动init进程,init是Linux系统启动时第一个启动的进程,init读取inittab文件,先执行/etc/rc.d/rc.sysinit...初始化脚本(设置主机名,加载inittab,设置网卡和一些PCI设备),根据inittab设置的级别指向相对应的脚本,如果是3模式则指向/etc/rc3.d下面的脚本以及程序,执行rc.local,最后启动
启动操作 nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作 停止操作是通过向nginx进程发送信号来进行的
linux启动顺序: 1)开机BIOS自检 2) MBR引导 3)grub引导菜单 4)加载内核kernel 5) 启动 init 进程 6) 读取...inittab文件,执行rc.sysinit rc 等脚本; 7)启动login登录界面 login 8)在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的
领取专属 10元无门槛券
手把手带您无忧上云