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

标签:linux

共 476 篇相关文章

IT 累计浏览 1,564

如何在 Linux 中的特定时间运行命令

这篇讲的是,在Linux系统里如何为一条命令设定执行时限,时间一到就自动让它“收工”。文章的出发点很实际:作者用 `rsync` 传输大文件时,既不想干等20分钟,又不想手动中断进程。他发现系统里其实有现成的工具能轻松实现“定时关闭”。 文章核心介绍了两种解决方案。最常用的是 `timeout` 命令,它属于GNU coreutils包,几乎开箱即用。用法很简单,例如 `timeout 10s tail -f /var/log/pacman.log` 就能让 `tail` 命令只运行10秒。它还支持分钟(m)、小时(h)、天(d)等单位,并且可以通过 `-k` 参数设定一个超时的“宽限期”。 另一种是 `timelimit` 程序,功能比 `timeout` 更丰富,可以分别设置警告信号、终止信号及其时间点,为进程提供更优雅的退出过程。它需要在Debian或Arch等发行版中额外安装。 这两个工具对于那些可能长时间运行、甚至可能冻结系统的命令来说非常实用,能有效防止资源被无限占用。文章通过一个日常运维场景,清晰地展示了两种工具的用法和差异。

IT 累计浏览 1,240

Linux 文件系统详解

这篇讲的是Linux文件系统,作者从1996年的亲身经历切入:当时他学会了安装软件,却对/etc、/usr这些“神秘目录”的含义一头雾水。文章的目的就是帮助新手快速搞清楚这套结构。 不同于纯理论讲解,作者推荐了一个非常具体的起点:在终端安装并运行`tree`命令,尤其是`tree -L 1 /`,能立刻直观展示从根目录开始的、清晰的一级目录树。接着,文章对/bin(用户基本工具)、/boot(启动文件,警告别乱动)、/etc(系统配置)、/home(用户个人文件)等核心目录逐一拆解,解释了它们的用途和命名由来。 文中还穿插了不少实用细节,比如现代发行版中/bin和/usr/bin的趋同关系,/tmp是少数无需root权限即可操作的目录,以及/srv等特定服务数据的存放位置。作者的口吻带着老技术人的风趣,比如调侃自己对新工具“不以为然”,但整体非常务实,旨在帮读者快速建立对Linux文件系统的结构化认知,避免当初自己踩过的坑。

IT 累计浏览 1,757

Linux 中一种友好的 find 替代工具

这篇讲的是一个叫 `fd` 的 Linux 文件搜索工具,它是传统 `find` 命令的现代化替代。作者从日常使用 `find` 的痛点出发——语法复杂、输出单一——介绍了这个基于 Rust 编写的工具如何用更简洁的语法和智能设计来覆盖 80% 的搜索场景。 文章具体展示了 `fd` 几个关键的提升:默认就支持彩色输出和智能大小写匹配,搜索语法直观很多(比如直接 `fd services` 就能递归搜索)。它通过 `-t` 参数区分文件和目录,用 `-H` 包含隐藏文件,还能轻松指定搜索路径或进行全局搜索。这些对比让 `find` 用户能迅速感受到差异。 文章核心是“对比与上手”,通过大量命令行示例,清晰呈现了 `fd` 如何在保持足够功能的前提下,极大简化了文件查找工作。对于经常在终端操作的开发者,这是一个能直接提升效率的工具。

IT 累计浏览 2,188

我正在运行的 Linux 是什么版本?

“我正在运行的 Linux 是什么版本?”——这个问题看似简单,却常常指向两个不同的答案:你究竟想知道内核的版本,还是整个操作系统的发行版?对于需要排查驱动问题或确定软件包管理方式的用户来说,这两者都至关重要。 这篇文章没有空谈概念,而是直接给出了实操路径。要找出内核版本,作者推荐了最简洁的命令 `uname -srm`,一行输出即可包含内核名称、版本号和硬件架构。对于发行版信息,检查 `/etc/os-release` 文件是最通用的方法。文章以 Fedora 为例,展示了该文件不仅包含名称与版本号(如 "Fedora 28"),还透露了更丰富的上下文,比如变体(Workstation Edition)。 更巧妙的一点是,作者指出了 `os-release` 文件中 `ID_LIKE` 字段的实际价值。比如 CentOS 的这个字段明确写着它像 RHEL,这为用户在寻找解决方案时提供了关键线索——你可以放心地参考 RHEL 的文档来处理 CentOS 上的问题。这对于在庞大 Linux 生态中导航的用户来说,是一个非常实用的技巧。

IT 累计浏览 1,761

在 Linux 上复制和重命名文件

这篇讲的是 Linux 命令行里文件操作的进阶玩法。它跳出了大家最熟悉的 cp 和 mv,介绍了几个能显著提升效率的工具。 作者从基础的 cp/mv 命令切入,指出它们在处理批量文件时的局限性。接着展示了更高效的替代方案:用 tar 命令快速创建整个目录或符合模式的文件归档;用 for 循环脚本批量为文件添加备份后缀;以及利用 Shell 的花括号扩展,用一条 cp 命令完成长文件名的备份。 文章的核心亮点在重命名部分,详细演示了 rename 命令的威力。它通过灵活的 Perl 正则表达式,可以一次性完成批量操作,例如将所有大写字母转为小写、统一移除或添加文件扩展名,甚至替换文件名中的特定字符串。通过对比 mv 的单个操作与 rename 的批量处理,突显了后者在特定场景下的不可替代性。 总的来说,这篇文章不是泛泛而谈,而是通过具体、可立即上手的命令示例,展示了几种被低估的文件管理技巧。掌握这些方法,能让你在日常维护中处理大量文件时事半功倍。

IT 累计浏览 2,994

使用 Ubuntu Cleaner 为 Ubuntu/LinuxMint 释放空间

这篇文章讲的是如何用 Ubuntu Cleaner 快速释放 Ubuntu 及其衍生发行版(如 LinuxMint)的磁盘空间。对于 Linux 用户来说,系统长期使用后容易堆积缓存、旧内核和残留包,而手动清理过程繁琐又容易出错。 作者推荐了 Ubuntu Cleaner 这个工具,它其实源自经典的 Ubuntu Tweak 中的 Janitor 模块,后来由开发者独立维护并重新发布,算是让许多用户怀念的功能得以延续。这款工具能一键清理浏览器缓存、缩略图、APT 缓存、过期内核和无用包等“垃圾”,覆盖了大部分常见的空间占用源。 安装过程很简单,通过官方 PPA 源就能轻松搞定。使用起来也很直观:启动后勾选需要清理的项目,点击清理按钮即可。整个操作避免了手动执行复杂命令的风险,把原本耗时费力的系统维护变成了一次点击就能完成的事。 对于那些苦于系统空间不足,又不想折腾命令行的用户来说,这篇教程提供了一个高效、安全的解决方案。它让清理系统垃圾这件麻烦事变得轻松许多,尤其适合想要快速恢复磁盘空间的日常使用场景。

IT 累计浏览 2,420

ubuntu系统root用户不能通过ssh远程登录问题

这篇讲的是Ubuntu系统中一个常见的SSH登录障碍:明明知道root密码,在虚拟机内能正常登录,但通过SSH远程连接时却总是报错“Password Authentication Failed”。问题根源往往藏在sshd的配置文件里——默认设置中`PermitRootLogin`被设为`without-password`,这意味着root用户只允许使用密钥认证登录,拒绝了所有密码验证请求。 解决方法直截了当:通过`vim /etc/ssh/sshd_config`编辑配置,将这一行改为`PermitRootLogin yes`,从而开放root用户的密码登录权限。修改完成后,只需重启sshd服务或重启系统,再次尝试远程连接就能顺利进入。 这篇内容虽然不长,但精准切中了一个实际运维中容易忽略的配置陷阱。对于刚接触Linux服务器管理的用户来说,理解认证方式与权限配置之间的对应关系,是排查连接故障的基础一步。

IT 累计浏览 2,340

find命令详解

这篇讲的是Linux系统里人人都会用、但未必人人都精通的`find`命令。作者开篇就直指那些让很多人困惑的细节:比如`find / -mtime +7`和`find / -mtime -7`到底在找什么?为什么`-exec`后面有时是`{}`加`+`,有时是`{}`加`\;`? 文章的核心是把`find`的参数拆解成四大类:Tests(条件测试)、Actions(执行动作)、全局选项和位置选项。重点落在Tests部分,这里把时间参数讲得非常透彻。`-mtime 7`并不是“修改于7天前”,而是“修改时间落在当前往前第7个24小时那个区间内”;加上`+`号就变成了“大于7天前”,加上`-`号则是“7天以内”。这种对数字范围的精确界定,是很多教程一笔带过的。文章还对比了`-anewer`、`-newer`等不同时间比较参数的用法,甚至提到了`-newerXY`这种能跨时区比较(如修改时间对比变更时间)的进阶技巧。 除了时间,文章也梳理了如何按用户、权限来筛选文件,并穿插了`-ls`、`-exec`等常用动作的实际案例。整体来说,它不是一份简单的命令手册,而是通过厘清易混淆的概念(尤其是时间参数和`-exec`的语法),帮助读者把`find`从“会用”提升到“精准使用”的层次。对于需要经常处理文件系统的运维或开发人员,这些细节差异直接决定了命令的成败。

IT 累计浏览 3,616

Linux内存中的Cache真的能被回收么?

这篇讲的是Linux系统中一个经典但常被误解的问题:那些被buffer和cache占用的内存,到底能不能在需要时被释放。文章从`free`命令的输出切入,指出了三种不同层次的理解,并重点剖析了第二种——即很多人认为buffer/cache内存“随时可释放”的认知其实并不完全准确。 作者清晰解释了page cache和buffer cache的核心区别:前者主要用于缓存文件读写,后者用于块设备I/O缓存。Linux内核确实会在内存压力大时回收这些缓存,但这个过程并非没有代价——回收前必须确保缓存数据与磁盘文件一致,往往会导致瞬间的IO飙升。 文章的真正价值在于通过一个具体的tmpfs实验揭示了回收的边界。当把大量数据存入基于内存的tmpfs文件系统时,这部分内存会体现在`cached`指标里,`free`命令也提示有很多“可用”内存。然而,当尝试手动执行`echo 3 > /proc/sys/vm/drop_caches`进行回收时,这部分内存却无法被释放,因为它本质就是系统分配给tmpfs的物理内存,不属于可回收的缓存范畴。 因此,结论很明确:并非所有在`free`命令中显示为“cached”的内存都能被回收。像tmpfs这类“内存就是存储”的场景,占用的空间是“实实在在”的已使用内存,这与加速文件访问的磁盘缓存有本质区别。理解这一点,对于准确评估系统内存压力至关重要。

IT 累计浏览 5,560

给树莓派安装ArchLinux

这篇文章解决了一个实际问题:当树莓派官网不再提供ArchLinux镜像下载后,如何手动将这个轻量高效的系统安装到SD卡上。作者从ArchLinux的设计理念——简单、轻量、高性能——出发,解释了它为何特别适合树莓派这类嵌入式环境。 核心方案是一套清晰的命令行安装流程。文章从下载对应型号的ARM版系统包开始,逐步讲解了如何使用fdisk为SD卡创建boot和root两个分区,分别格式化为FAT32和ext4文件系统,然后将解压的系统文件移动到正确位置。其中特别强调了将设备名“sdX”替换为实际编号的操作细节,并提供了root和alarm用户的默认登录信息。 整个过程虽然比直接写入镜像稍显繁琐,但能更合理地利用SD卡空间,为后续在树莓派上发挥ArchLinux的扩展性和性能优势打下干净的基础。

IT 累计浏览 2,877

Android系统开机启动流程及init进程浅析

这篇技术文章深入剖析了Android系统从上电到桌面的完整启动链路。它没有停留在概念介绍,而是将启动过程清晰地拆解为Boot Loader引导、Linux内核启动和Android系统初始化三个阶段,并特别聚焦于Linux内核如何启动第一个用户空间进程——init进程。 作者从内核的`start_kernel`函数开始,追踪了`rest_init`中如何通过`kernel_thread`创建1号内核线程`init`,随后详细分析了`kernel_init`函数的执行流程:等待`kthreadd`线程就绪、完成基础设备驱动初始化(`do_basic_setup`),最终执行用户空间的`/init`程序,从而转变成真正的init进程。init进程作为所有用户进程的“老祖宗”(进程号恒为1),负责挂载文件系统、解析`init.rc`配置,并拉起Zygote、ServiceManager等关键守护进程,是通向整个Android文件系统和应用世界的起点。 文章结合代码,条理清晰地展现了从底层硬件复位到高层系统服务就绪的齿轮咬合过程,对于理解Android启动的本质——即内核空间如何交接并催生用户空间——提供了非常扎实的线索。

IT 累计浏览 3,100

centos误删东西的教训

这篇文章源于作者一次惊险的误操作经历。在尝试通过WinSCP向CentOS服务器传输文件时,因Dropbox被屏蔽和软件问题导致传输中断。作者随后移动(mv)了未完成的文件夹,而在清理时,不慎将其中的WordPress程序目录一并删除,险些酿成数据丢失的严重后果。 幸运的是,作者此前在本地测试环境留有备份,得以成功恢复。这次教训促使他立即采取了预防措施:在 `~/.bashrc` 文件中为 `rm` 和 `mv` 命令添加了 `-i`(交互式确认)别名。这意味着未来执行删除或移动操作时,系统会要求二次确认,从而有效避免手滑带来的风险。 这是一个非常典型的运维“手速”事故案例,作者分享的具体补救方法和预防性配置,对于任何使用命令行进行文件操作的开发者和运维人员都具有实用的参考价值。

IT 累计浏览 1,934

设置 linux 命令缓冲模式

这篇文章讲的是Linux系统中一个容易被忽略但很实用的细节:命令行工具在管道或重定向时的缓冲模式问题。作者从实际场景出发,点明了在使用管道处理实时数据时,命令默认的全缓冲行为会导致输出延迟,影响即时分析。 文章的核心方案是利用`stdbuf`命令来灵活控制标准输入输出的缓冲策略。作者不仅解释了`-oL`(行缓冲)、`-iL`、`-e0`(无缓冲)等参数的具体含义,还通过`stdbuf -oL tcpdump | grep`这个实例,展示了如何为本身不提供缓冲设置的命令“强行”加上行缓冲,从而实现实时输出。 这个工具的价值在于其通用性,无论目标命令是否支持缓冲参数,都能通过它来调整,解决了数据处理流水线中的阻塞等待问题,让调试和监控更即时高效。

IT 累计浏览 1,127

Linux的chattr与lsattr命令

这篇讲的是Linux系统运维中容易被忽略但极其重要的底层属性控制工具——chattr与lsattr。作者开篇就点明,与常见的chmod命令仅管理读写执行权限不同,chattr能在更底层的文件系统层面施加保护,这对保障服务器日志和核心配置文件的安全至关重要。 文章聚焦于两个最实用的参数:“a”(仅允许追加)和“i”(完全不可变)。作者通过具体场景阐释其价值:用`chattr +a`锁定日志文件,确保记录只增不删;用`chattr +i`保护系统配置文件如resolv.conf,使其无法被移动、修改或删除,从而防范误操作或攻击。这些设置甚至能解决实际故障——文中就演示了当passwd/shadow文件被意外设置i属性导致root密码修改失败时,如何用chattr解除限制再恢复安全状态。 核心在于,这些底层属性需由root用户显式设置,权限极高。理解它们,相当于为关键文件上了把“系统级”的锁,是构建纵深防御的实用一课。

IT 累计浏览 1,663

Linux内核参数调整

这篇讲的是如何通过调整一系列Linux内核参数,来解决高并发服务器性能瓶颈与稳定性问题。作者从实践出发,将原本分散的配置点系统地串联起来。 文章的核心在于将ulimit文件描述符限制提升到10万以上,这是支撑海量并发连接的基础。同时,详细拆解了几个关键网络参数的调整:比如增大socket缓存区以优化数据吞吐,设置tcp_tw_reuse和tcp_tw_recycle以加速服务重启时的端口回收,以及启用tcp_syncookies来防御SYN洪水攻击。对于进程间通信,也给出了消息队列的具体配额建议。 除了性能,文章还关注了调试与兼容性。它解释了如何开启并配置coredump,以便在程序崩溃时快速定位问题;并补充了FreeBSD/MacOS下的类似调整方法。整篇文章更像一份精心整理的“调优清单”,把影响高负载服务器的文件限制、网络栈、IPC和故障诊断等关键环节都梳理到了一起,给出了从原理到具体配置值的直接指导。

IT 累计浏览 1,539

Linux文件系统基础之inode和dentry

这篇讲的是Linux文件系统中两个最核心的元数据结构——inode和dentry,以及它们如何协同工作来构建我们熟悉的文件目录。 作者从虚拟文件系统VFS的抽象层入手,解释了为什么需要这些结构来统一管理底层不同的实体文件系统(如ext4)。文章指出,inode是内核中文件对象的唯一标识,它存储了权限、属组、数据块位置等所有静态元数据,但刻意不包含文件名。而文件名与inode的映射关系,则由目录项dentry在内存中动态建立和维护。 通过阅读文件路径时内核的解析过程,文章清晰地展示了dentry如何通过内存中的树状结构,高效地缓存和还原出文件系统的目录层次。这种设计将稳定的磁盘结构与灵活的内存缓存分离,是Linux文件系统高性能的关键。 理解了inode和dentry,文章最后点明,文件链接的奥秘也迎刃而解:软链接拥有独立的inode和内容,而硬链接仅仅是为同一个inode在目录项中新增了一条名字映射,并通过引用计数管理生命周期。整篇文章从底层原理出发,把看似复杂的文件系统机制拆解得条理分明。

IT 累计浏览 2,372

建立私有的 yum 源站

在企业内部运维中,管理统一的软件包源是个常见需求。这篇讲的是如何从零搭建一个私有 yum 源站,非常适合需要集中管控软件分发的团队。作者从最基础的三要素讲起:准备好要发布的 rpm 包、使用 `createrepo` 工具建立索引,最后通过 webserver(或本地/FTP)提供服务。 文章直接给出了可操作的步骤。从安装 `createrepo` 工具开始,到创建分层目录、复制 rpm 包,再到执行 `createrepo` 命令生成索引,每一步都有明确的命令示例。特别提醒了关键细节:每次新增 rpm 包后,都需要重新执行索引生成命令,否则客户端可能无法感知更新。 整个过程聚焦于 yum 源的核心构建逻辑,将 webserver 的具体配置留给读者自行扩展。对于想要快速搭建内部源、减少对外部网络依赖的运维人员,这套方法提供了一个轻量且清晰的起点。

IT 累计浏览 1,762

如何通过 Yum 安装 Pure-ftpd

这篇教程从配置Yum源讲起,演示了在CentOS系统上快速部署Pure-ftpd FTP服务器的完整流程。核心方案是通过阿里云的EPEL源来获取软件包,从而解决官方源可能缺失的问题。 教程的关键操作包括修改pure-ftpd.conf配置文件,例如启用日志、设置虚拟用户数据库路径、关闭匿名登录,以及配置被动模式下的端口范围(48000-50000)。作者还详细说明了如何创建系统用户与虚拟用户,并设置相应的目录权限。 为了确保服务可被外部访问,文中补充了防火墙规则的配置,放行了控制端口21和被动模式端口。最后,通过chkconfig和init.d脚本实现服务的持久化与启动。整套流程完整且实用,适合需要快速搭建FTP服务的运维人员直接参照。

IT 累计浏览 1,814

使用whiptail在shell脚本中创建交互式对话框?

这篇文章介绍了一个让Shell脚本“活”起来的实用工具——whiptail。它能帮助你在纯终端环境下,快速创建出直观的用户交互界面,就像许多Linux软件安装过程中弹出的对话框一样。 作者详细演示了whiptail的多种对话框类型,包括最基础的消息确认框(msgbox)、提供是/否选项的决策框(yesno),以及能接收用户文本输入的表单框(inputbox)。对于需要处理敏感信息的场景,还专门讲解了密码输入框的实现方法。 更进一步,文章展示了如何用whiptail构建复杂的选择逻辑:创建单选菜单(menu)、单选列表(radiolist)供用户选择一项,以及多选清单(checklist)让用户勾选多个偏好。最后,它甚至支持在脚本中显示一个实时进度条(gauge),让长时间的任务反馈更友好。 whiptail是一个预先安装在大多数Linux发行版中的工具,这意味着你可以直接在脚本中调用它,无需额外安装。掌握它,就能轻松将你的脚本从简单的命令行工具,升级为具备良好用户体验的交互式程序。

IT 累计浏览 2,913

Linux安全之SYN攻击原理及其应对措施

这篇讲的是Linux系统面临的经典网络层攻击——SYN Flood。文章直接切入TCP协议固有的缺陷,解释了攻击者如何利用伪造的SYN包耗尽服务器的连接队列,从而瘫痪正常服务。理解了原理后,关键在于防御。文章没有停留在理论,而是给出了四种可立即操作的系统调优方案:通过调整`tcp_synack_retries`等参数减少无效等待,启用强大的SYN Cookie机制来抵御伪造包,适当扩大半连接队列容量,以及用iptables规则对异常流量进行限速。每条措施都附带了具体的`sysctl`或`iptables`命令,从内核参数到防火墙规则,覆盖了从缓解到防御的多层次思路。对于需要加固服务器网络安全的运维人员,这些直接可用的配置点很有参考价值。