IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:linux

共 476 篇相关文章

IT 累计浏览 11,586

Linux命令行里的“瑞士军刀”

这篇讲的是那些能用一行命令完成复杂任务的Linux“瑞士军刀”级技巧。作者分享了一组来自Quora的高效单行脚本,它们能用极简的语法替代大段的代码,威力惊人。 比如,要计算两个文本文件的交集、并集和差集,只需`cat a b | sort | uniq`的几种变体即可轻松搞定,无论文件多大。汇总一列数字的和,一条`awk`命令就能完成,比用Python写循环快3倍且代码量更少。想要快速查看目录下所有文件的大小和修改时间?`find . -type f -ls`比递归的`ls -lR`输出更清晰。 文章还展示了`xargs`的惊人力量——它能将标准输入转化为命令参数,用于批量处理,比如从文件读取主机名列表并并行执行SSH命令。另一个实用场景是分析Web日志:一行命令就能统计日志中特定参数(如`acct_id`)的请求次数,并按频率排序。 这些技巧的共同点是极致的效率与简洁,充分体现了Unix哲学中组合小工具完成大任务的思想。对于系统管理员或后端开发者来说,掌握这些单行命令,能让你在文本处理、系统运维等任务上如虎添翼。

IT 累计浏览 13,232

Linux内存点滴 用户进程内存空间

这篇详解Linux用户进程的内存空间,作者从大家熟悉的top命令输出讲起,解释了VIRT、RES等字段背后,其实是进程被内核分配的虚拟内存(VM)这一核心概念。 文章重点梳理了这块内存空间的构成,清晰地区分了Text(代码段)、Data、BSS、Heap(堆)和Stack(栈)这几个段的特性与用途,并通过多个C语言示例,生动演示了不同段数据的生命周期和访问权限差异——比如栈上变量在函数返回后失效,而堆内存则需手动释放以防泄露。 此外,文章还深入到底层,分析了malloc()函数通过brk()和mmap()系统调用分配内存的机制,并解释了“按需缺页”这一精妙的虚拟内存管理策略:首次访问时才分配物理页框,从而高效利用系统资源。最后,通过strace工具跟踪系统调用,直观展示了内存分配的实际过程。对于想从应用层迈向系统内核,理解Linux如何为进程管理内存的开发者,这篇内容提供了非常扎实的起点和细节剖析。

IT 累计浏览 6,405

C的那些事儿

这篇讲的是C语言在Linux生态中的实践心得与工具推荐。作者从C语言作为许多人的编程启蒙谈起,指出尽管学习路径在演变,但C语言在Linux系统编程领域——如操作系统、数据库等高性能场景——仍占据着核心地位。 文章重点分享了提升C语言“品味”的具体路径。一方面推荐使用Source Insight这类静态分析工具,通过代码跳转、关系图等功能,在庞大的开源代码库中理清脉络;另一方面更推崇借助gprof和cgprof进行动态性能分析,生成可视化的函数调用图,直观展示函数调用次数与时间占比,以真实运行数据替代主观猜测。 作者还特别赞赏了Linux的管道(Pipe)机制,它让不同程序能够无缝衔接,实现了二进制层面的高效代码复用,这比单纯的语句级复用更为精妙。文中以通过管道串联grep、awk等命令为例,展现了这种设计的优雅与强大。 整篇文章并非泛泛而谈,而是结合了作者手边的函数手册、亲测有效的工具链(从编译选项`-pg`到生成调用图的完整流程),以及对Linux设计哲学的具体感受,为想在开源世界中精进C语言的读者,提供了一条清晰、可操作的实践思路。

IT 累计浏览 3,864

快速查看服务器硬件配置信息

这个脚本的目标很明确:为运维和开发人员提供一个一键式工具,快速获取Linux服务器的硬件与系统概况。它从几个关键维度着手,条理清晰。 首先,它智能识别操作系统发行版,无论是通过`lsb_release`还是直接读取`/etc/issue`,确保兼容性。接着,脚本深入`/proc/cpuinfo`和`/proc/meminfo`,提取CPU型号、物理颗数、核心数、逻辑处理器数,以及内存总量、交换空间、缓存等详细数据。对于磁盘信息,它整合了`fdisk`和`df`命令的结果,给出物理磁盘概况与各分区使用情况。 脚本的一个巧妙之处在于对64位系统的判断逻辑——通过检查CPU是否支持`lm`(长模式)标志,而非直接依赖系统位数。整个实现大量运用了管道和`awk`/`sed`进行文本处理,逻辑连贯,输出格式用等号线分隔,清晰易读。 对于需要快速摸底新服务器配置,或进行批量巡检的团队来说,这个脚本提供了一个非常直接、可立即落地的方案。它省去了手动拼接多个命令的麻烦,将分散的信息点整合成一份完整的“体检报告”。

IT 累计浏览 7,062

Linux grep命令用法

这篇讲的是如何用好Linux下强大的文本搜索工具grep。它远不止`grep pattern file`这么简单,文章系统梳理了grep从基础到高级的28个参数,把每个参数的用法、场景和注意事项都讲透了。 比如,除了常见的`-i`忽略大小写,它还深入讲解了如何用`-A`、`-B`和`-C`参数灵活地展示匹配行的上下文,这在分析日志时非常实用。对于二进制文件这种容易出错的情况,文章也明确了`-a`和`-I`参数如何改变grep的行为。从递归搜索目录(`-r`)到只显示文件名(`-l`),再到精确匹配单词(`-w`),文章用大量实例(如`grep -A 1 panda file`)展示了这些参数如何组合,解决实际的代码审查、日志过滤等问题。 文章像一本详尽的参数手册,却比手册更易读,因为它把每个抽象参数都落到了具体命令和输出结果上。无论你是刚接触grep的新手,还是想挖掘更多高级用法的老手,都能从中找到立即可用的技巧。

IT 累计浏览 11,607

100个常用的linux命令

这篇整理了100个高频Linux命令的实用指南,覆盖了从基础文件操作到系统监控的方方面面。比如,用 `echo "aa" > test.txt` 清空并写入文件,`chmod go+w -R` 精准修改权限,`tar -tzvf` 快速查看压缩包内容,`du -sh` 一目了然获取目录总大小。文章对每个命令的说明都直击要点,例如解释 `bc -l` 能直接进行浮点运算,`uptime` 能快速查看系统负载均值,`lsof -i :22` 可以揪出占用特定端口的进程。 除了常规操作,还包含了不少实用技巧,比如通过 `ctrl+a` 和 `ctrl+e` 在命令行快速移动光标,使用 `rsync -P` 在同步文件时显示进度,以及用 `nmap -sP` 扫描网段内的活跃主机。这些命令片段犹如一张速查表,无论是新手入门还是老手备忘,都能从中找到即拿即用的解决方案。对于经常在终端下工作的开发者来说,掌握这些命令能显著提升日常操作效率。

IT 累计浏览 4,592

Ubuntu中apt-get列出的软件包前面的字母标识含义

在 Ubuntu 服务器上管理软件包时,`apt-get` 或 `aptitude` 命令输出的每一行开头,常常带着让人有点困惑的字母代码。这篇文章的核心,就是把这些看似随意的标识一一解码,让你能“读懂”系统在告诉你什么。 它把标识拆解成两个位置来说明。第一个字母代表软件包当前的状态:比如 `i` 表示已安装,`c` 表示包已删除但残留了配置文件,而 `v` 则指明这是一个虚拟软件包。第二个字母则预告了即将对它执行的动作,例如 `i` 代表即将安装,`d` 代表即将删除。 搞清楚这些简码,相当于掌握了和 Ubuntu 包管理器直接对话的密钥。下次再运行相关命令时,你就能立刻从输出信息中把握住每个软件包的准确状况和系统预定操作,让日常的维护与排障工作变得更高效、更清晰。

IT 累计浏览 9,607

linux中设置alias永久生效

这篇讲的是如何让Linux终端的alias别名设置永久生效。很多人在使用alias时都遇到过同样的困扰:明明在当前终端设置了快捷命令,一关窗口就失效了,下次还得重新输入。作者从这个常见痛点出发,给出了一个简单直接的解决方案。 关键在于将别名定义写入用户目录下的`.bashrc`文件。文章以Ubuntu系统为例,展示了如何用`ls -a`找到这个隐藏文件,并用编辑器打开它。在文件的后半部分,我们能看到系统预设的一些别名(如`ll`、`la`),在这里添加自定义的别名,比如`alias log='cd /apache-tomcat/logs'`。保存文件后,只需执行`source ~/.bashrc`命令,新设置的别名就会立即生效,且之后每次打开终端都无需重复配置。 这个方法避免了每次手动设置的麻烦,把常用的目录跳转或复杂命令固化成简短的别名,能显著提升命令行工作效率。文章步骤清晰,对于经常使用终端的开发者来说,是一个能立即上手的实用技巧。

IT 累计浏览 6,654

linux下的高效代码搜索工具-ack

这篇讲的是一个专为程序员打造的代码搜索工具——ack。作者从厌倦了反复敲击 `grep + find` 的组合命令出发,介绍了这款号称“better than grep”的利器。 ack的核心优势在于它为源代码搜索做了深度优化。它默认会忽略版本控制、二进制文件和非源码目录,只在有意义的文件中高速检索,这直接解决了使用grep时经常误中日志或无用文件的痛点。文章通过对比展示了ack更简洁的语法:例如用 `ack-grep -w hello` 快速精确匹配单词,用 `--python` 参数一键限定只搜索Python文件,省去了繁琐的过滤步骤。文中还详细演示了ack在结果处理(如只显示文件名)、文件查找和基于文件类型的灵活过滤等方面的实用命令。 此外,ack支持通过配置文件固化个人习惯,例如设置默认搜索的语言类型、结果排序和分页展示,让高频操作更加顺手。对于需要在复杂项目中快速定位代码片段的开发者来说,ack能显著提升效率,是grep一个更聚焦、更现代的替代选择。

IT 累计浏览 11,868

Linux Used内存到底哪里去了?

这篇讲的是Linux运维中一个经典困惑:用`free`命令看到内存已用7-8G,但`ps aux`统计的进程RSS总和却不到30M,多出的内存到底去哪了? 作者从同事的实际问题出发,逐步拆解。先解释`free`输出的含义,指出buffer/cache虽被计入used但可回收;然后通过工具如nmon、top分析,发现进程RSS确实占了大头,但还有剩余。进一步揭示内核开销:slab缓存用于对象池,通过`slabinfo`计算消耗了约900MB;页表管理物理页面,从`/proc/meminfo`读取占了58MB;加上struct page等固定消耗。通过编写脚本累加进程RSS、页表和slab,结果与`free`的used基本吻合,但略多171MB,原因是RSS计算中共享库被重复计算。 文章最后澄清了内存计算的迷糊账,教会读者如何用`slabinfo`、`/proc/meminfo`等工具自查,理解Linux内存管理的底层细节。对于遇到类似问题的开发者,这是一次清晰的排查示范。

IT 累计浏览 2,377

Java Crypto在Linux下性能低下问题的解决方案

这篇讲的是Java Crypto在Linux下性能低下问题的解决方案。作者从实际踩坑经验出发,发现使用java.security包中的方法(比如SecureKeyFactory.generateSecret())时,执行异常缓慢,有时甚至陷入半僵死状态。问题的根源在于Linux系统默认的securerandom.source配置(指向/dev/urandom),其随机数生成效率较差,拖累了整个加密操作流程。 为了解决这个棘手问题,文章提供了两种经过验证的实用方法。第一种是直接编辑JRE目录下的java.security文件,将securerandom.source的值改为file:/dev/./urandom——这个微妙的路径调整能绕过性能瓶颈。第二种则更彻底:通过yum安装rng-tools工具包,并配置rngd服务来增强系统随机数源。具体包括设置EXTRAOPTIONS参数、启用开机自启和重启服务,以提升/dev/random设备的可用性。 这些针对性调整虽然简单,却能显著优化Java加密操作的响应速度。如果你在Linux服务器上运行Java应用时遇到类似卡顿,不妨从配置层面入手,往往能收到立竿见影的效果。

IT 累计浏览 2,139

大分区使用xfs文件系统存储备份遇到的问题

这篇讲的是一个在24TB大分区上使用XFS文件系统做备份时,遇到的典型“陷阱”。同事反馈明明磁盘显示还有2.4TB可用空间,inode使用率也极低,系统却突然报告没有磁盘空间了。 经过排查,根因藏在XFS的一个默认设计里:在32位inode模式下,XFS会将所有inode(文件元数据)集中在磁盘最开始的1TB空间内。当这个1TB区域因存放了大量小文件的inode而“填满”时,即使磁盘其余部分空空如也,系统也无法创建新文件,从而抛出令人困惑的“磁盘已满”错误。 文章给出的解决方案明确而直接:在挂载文件系统时,加上`inode64`选项。这个选项会让inode和数据块就近存放,打破了最初的1TB限制,完美适配超过1TB的大容量磁盘。文末还贴心地提醒,如果磁盘本身就小于1TB,则无需担心这个问题。对于运维和架构人员来说,这是一个在规划大容量存储时非常值得留意的细节。

IT 累计浏览 3,500

dropwatch 网络协议栈丢包检查利器

这篇讲的是,当Linux服务器出现网络超时,用tcpdump或wireshark抓包能看到丢包,但往往很难定位到内核协议栈深处的具体丢包位置。作者介绍了一个专门解决此痛点的利器:dropwatch。 dropwatch的核心能力是精准定位数据包在Linux网络协议栈中“被丢弃”的内核函数位置。文章演示了在RHEL系系统上,通过简单的yum安装后,以交互模式启动`dropwatch -l kas`,就能实时看到诸如`netlink_unicast`、`unix_stream_recvmsg`等函数的丢包计数,并直接对应到内核源码,大大缩小了排查范围。 它的原理巧妙地利用了内核的kprobe机制。工具会监控内核中关键的`kfree_skb`函数调用(该函数在协议栈多个层次被用于释放数据包)。当监控到此函数被调用时,即视为一次丢包,dropwatch会记录并通知用户空间显示发生丢包的内核函数符号信息。文章还指出,要让dropwatch工作,内核需要打特定的补丁以区分“正常释放”和“丢包释放”,并通过Netlink将信息传递给用户空间。对于运维和网络开发人员来说,这是一个深入内核腹地、直击丢包根源的高效诊断工具。

IT 累计浏览 9,367

AWK 简明教程

这是一篇关于Linux文本处理工具AWK的入门教程。作者从AWK的历史讲起——这个由贝尔实验室三位大佬(姓氏首字母为A、W、K)于1977年创造的“上古神器”,并以一篇《Linux下应该知道的技巧》引发读者兴趣为引子。 教程风格极为直接,作者自述“基本无废话”,目的有二:让你在通勤或如厕的碎片时间里就能读完;更希望像一个火辣的引子,激发你自己动手深入研究的兴趣。全文通过大量实例展开,比如从`netstat`的输出文件中提取特定列(`$1,$4`)、使用`printf`进行格式化输出,以及如何添加过滤条件(如`$3==0 && $6=="LISTEN"`)来筛选出所需的网络连接记录。 教程从最简单的列提取,逐步过渡到过滤、格式化等核心操作,通过真实的网络状态数据作为案例,让读者能直观地看到AWK处理文本的威力。它没有试图面面俱到,而是聚焦于最常用、最高效的操作模式,目标是让你快速上手,掌握用AWK高效处理日常文本流的实用技能。

IT 累计浏览 7,744

Linux上进程的表示以及入门

这篇分享聚焦于Linux系统中进程的表示与入门,来自一淘数据部太奇同学的技术沉淀。内容面向所有对Linux底层原理感兴趣的开发者。 作者从进程的基本概念切入,层层递进。不仅讲解了进程在Linux系统中的原理与具体实现方式,还简述了进程通信中关键的信号处理机制。文章进一步延伸到内存管理的初步知识,帮助读者建立起对系统资源调度的初步理解。整个分享的最终目标,是为读者打开通向Linux内核深处的大门,搭建一个从用户空间认知跃迁到内核世界探索的桥梁。 对于想从应用开发迈向系统级理解的工程师而言,这篇文章提供了一个结构化的入门路径,为后续深入内核源码打下基础。

IT 累计浏览 8,655

Linux常用系统信息查看命令

这篇文章整理了Linux运维和开发中常用的系统信息查看命令,相当于一份精炼的“系统侦察”手册。 它从“系统”、“资源”、“磁盘和分区”、“网络”、“进程”、“用户”、“服务”和“程序”这八个维度,系统地罗列了对应的命令行工具。比如,想知道系统基本情况,可以运行 `uname -a` 查看内核版本,用 `free -m` 瞬间看清内存使用;排查网络问题时,`ifconfig`、`netstat` 和 `iptables` 就是标准三件套;而 `ps -ef` 和 `top` 则是进程监控的常用起点。 文章最大的特点是实用和直接。它没有展开讲解每个命令的复杂参数,而是聚焦于“用哪个命令看什么”这个核心场景,让读者能快速对照自己的需求找到对应的入口。无论是新手想快速了解服务器状态,还是老手需要备忘某些不常用的命令(比如 `hdparm` 查看磁盘参数,或 `dmesg | grep IDE` 查看启动日志),这份清单都提供了清晰的指引。 这份清单像一张系统的“体检项目单”,把散落在各处的查看命令按用途归类,方便你随时取用,对日常的服务器管理和问题排查很有帮助。

IT 累计浏览 4,573

限制单个进程的带宽

这篇文章讲的是如何在Linux系统中限制单个进程的网络带宽,而非传统的端口或全局限速。作者从系统管理员常见的需求出发,对比了几种方案的可行性。 传统的iptables配合owner模块的方法,在现代支持SMP的内核中已因匹配项被移除而基本失效。文章接着推荐了一个名为trickle的工具,它通过ELF preloader机制替换socket库函数来实现限速,用法简单。但作者也明确指出其局限:对静态编译或suid权限的程序无效。 为了解决更复杂的场景——例如对已运行进程动态调整带宽——文章最终引入了cgroup的net_cls控制器。它通过给数据包打标记,再交由tc流量控制工具处理,实现了类似iptables但更灵活、更现代的管理方式。这篇文章为不同环境下的进程带宽限制需求,提供了从传统工具到内核级方案的清晰对比和选型思路。

IT 累计浏览 4,083

Linux 找出大文件汇总

这篇讲的是 Linux 系统管理中一个非常实用的技巧:如何快速定位那些占用大量磁盘空间的“罪魁祸首”文件。作者没有停留在单一的命令上,而是横向对比了多种主流工具和方法,堪称一份“找出大文件”的工具箱。 核心部分详细对比了 `find` 命令在 RedHat 系和 Debian 系中的细微差异,比如 `awk` 提取的字段编号不同,这种细节对新手很友好。除了 `find`,文章还扩展介绍了使用 `ls -lS` 按大小排序、用 `du` 配合 `sort` 和一个精巧的 Perl 脚本来可视化目录占用情况(用星号条形图直观显示)。 特别值得注意的是,文章不仅教你怎么“找大”,也提到了如何“找小”,并且提供了不跨文件系统查找(`-xdev`)等实用选项。整体来看,这是一篇非常扎实的速查手册,能帮你在磁盘空间告急时,快速掌握从基础到进阶的多种排查手段。

IT 累计浏览 9,462

linux下搜索find命令详解

这篇文章来自一次内部技术培训,作者觉得分享的内容不够全面,于是系统地整理了 Linux 下 `find` 命令的各种常用选项和示例。 它开篇点明 `find` 是一个强大但速度较慢的搜索工具,随后围绕其基本语法 `find [路径] <表达式> [操作]`,详细拆解了十多个核心选项。文章不仅列举了按文件名(`-name`)、按时间(`-atime`, `-mmin`)、按用户(`-user`)和按大小(`-size`)进行查找的常规操作,还介绍了一些实用的进阶技巧。例如,使用 `-exec` 可以直接对查找结果执行命令,像批量删除 `.svn` 目录;利用 `-perm` 和 `-regex` 则能满足更精细的权限或模式匹配需求。文末附带的逻辑组合(`-o`, `-a`, `!`)和目录深度控制(`-maxdepth`)示例,让复杂条件的查询成为可能。 整体来看,这更像一份为团队定制的 `find` 命令速查手册,将零散的知识点梳理成了清晰的条目,每个选项都配以实际可运行的命令。对于日常需要在 Linux 文件系统中定位文件的开发者和运维人员来说,这份清单覆盖了绝大多数使用场景,省去了反复查阅手册的麻烦。

IT 累计浏览 3,137

在移动硬盘上安装 Arch Linux

这篇讲的是作者如何在移动硬盘上搭建一个便携的 Arch Linux 学习环境。起因是厌倦了 Ubuntu 半年一次的大版本升级,同时希望深入接触滚动更新的发行版。为了不影响主力工作机,作者选择将系统安装在移动硬盘上,以便随时折腾和学习。 文章详细记录了从分区规划到系统配置的全过程。作者为这块硬盘设计了四个分区:10G 的 btrfs 分区安装 Arch 系统本身,10G 的 ext4 分区用作用户主目录,一个大容量 NTFS 分区用于日常数据交换,以及小容量的交换分区。安装过程中,他特别注意了针对移动存储设备的优化,比如在 fstab 中启用 relatime 和 discard 参数,将 /tmp 挂载到内存,并通过调整 swappiness 参数尽量减少对磁盘的写入,以保护硬盘寿命。 除了基础系统安装,文章也涵盖了引导配置、时区语言设置等初始工作。整个过程不仅是技术步骤的罗列,更分享了作者从 Ubuntu 转向 Arch 的心路历程,以及他对服务器环境稳定性的谨慎态度。对于想尝试新发行版又担心影响现有系统的读者来说,这提供了一个清晰的、可复现的实践路径。