那些你可能遇到的 Linux 命令?什么,你还不知道?赶紧收藏?完善中!

2023-10-31

写在前面:以下截图执行结果(ps aux & ps -aux 除外)均基于 阿里云 CentOS7 系统。

一. Linux 进程

1. 通过进程名查找进程号

        通过进程名查找进程号当然非 Linux 进程管理命令 ps 啦!!!当然也可以 pidof+具体进程名。

1.1 ps aux & ps -ef:diff
  • ps aux | grep process_name (以 BSD 语法显示进程信息)
  • ps -ef | grep process_name (以标准语法查看系统进程信息,System V)

在这里插入图片描述
在这里插入图片描述

1.2 ps aux & ps -aux:什么?它们不一样?

在大多数现代的Linux系统上,ps -aux 和 ps aux 被视为等效的命令,因为 -a 选项已经默认包含了-x 选项的功能,但是还是建议使用 ps aux

        不会吧?不会吧?到现在还不知道它们不一样?
        实际上,通过 man ps 查看 ps 命令手册,能够看到这么一句话:

        Note that “ps -aux” is distinct from “ps aux”. The POSIX and UNIX standards require that “ps -aux” print all processes owned by a user named “x”, as well as printing all processes that would be selected by the -a option. If the user named “x” does not exist, this ps may interpret the command as “ps aux” instead and print a warning. This behavior is intended to aid in transitioning old scripts and habits. It is fragile, subject to change, and thus should not be relied upon.

        稍稍翻译一下:
        请注意,ps -auxps aux 是不同的。POSIX 和 UNIX 标准要求 ps -aux 打印所有由用户名 x 拥有的进程,并打印所有通过 -a 选项选择的进程。如果名为 x 的用户不存在,则此 ps 可能会将命令解释为 ps aux 并打印警告。此行为旨在帮助过渡旧的脚本和习惯。它是脆弱的,可能会发生变化,因此不应依赖它。

POSIX:Portable Operating System Interface of UNIX

        官方都这么说了?它两不一样。那我们用 Docker 实际体验一下:

在一些较老的 Unix 系统上,如 Solaris 和 AIX,ps -aux 和 ps aux 是不同的命令,具有不同的语法和输出格式,docker 似乎体验不到

  • Redhat 系列 之 CentOS7 (包管理方式 rpm/yum):它两执行结果一样
    在这里插入图片描述

  • CentOS6:ps -aux 打印警告信息
    在这里插入图片描述

  • Redhat 系列 之 RHEL (Red Hat Enterprise Linux):它两执行结果一样
    在这里插入图片描述

  • Debian 系列之 Debian (社区类 Linux 的典范,是迄今为止最遵循 GNU 规范的 Linux 系统,包管理方式为 apt-get & dpkg):它两执行结果一样
    在这里插入图片描述

  • Debian 系列之 Ubuntu 22.04 (基于 Debian 的 unstable 版本加强而来):它两执行结果一样
    在这里插入图片描述

  • Alpine:它两执行结果一样
    在这里插入图片描述

1.3 grep & awk:取出进程号、取出进程号并 Kill
  • ps aux | grep mysql | grep -v grep | awk '{print $2}'
    在这里插入图片描述
  • kill -9 $(ps aux | grep mysql | grep -v grep | awk '{print $2}')

在这里插入图片描述

2. 通过进程号查看进程信息:/proc/pid

        通过进程号查找进程信息进入 /proc/pid 目录即可

  • ll /proc/pid
    在这里插入图片描述

    • cwd (link):进程运行目录

    • exe (link):执行程序的绝对路径

    • cmdline:程序运行时输入的命令行命令

    • fd:打开的文件描述符目录,文件描述符链接到了打开的文件,cat + 文件描述符编号可以查看文件
      在这里插入图片描述

    • fdinfo:打开的文件描述符
      在这里插入图片描述

  • cat /proc/pid/status:内存使用情况
    在这里插入图片描述

3. 通过进程号查找进程名:ps

        通过进程名查找进程号当然也可以用 Linux 进程管理命令 ps 啦!!!

  • ps -p pid
    在这里插入图片描述

    • comm:COMMAND
    • comm=:COMMAND 等于
  • ps aux | grep pid:可以过滤,若 pid 存在的话 (固定的两个:grep 进程及 pid 所属进程),输出结果可能多于两个,不适合于脚本使用
    在这里插入图片描述

4. 通过端口号查看进程号:netstat
  • netstat -nap | grep port | awk '{print $7}' | awk -F "/" '{print $1}'
    在这里插入图片描述
5. 通过端口号查看进程名:netstat
  • netstat -nap | grep port | awk '{print $7}' | awk -F "/" '{print $2}'
    在这里插入图片描述
6. 监控进程占用情况:top & watch + ps
  • top:-d 选项可以修改刷新时间
    在这里插入图片描述

  • watch & ps:CPU 占用 top 15,五秒刷新一次,watch -n 5 'ps aux --sort -pcpu | head -15'
    在这里插入图片描述

二、Linux 文件

1. 监控日志文件:动态跟踪
  1. Shell 脚本模拟日志文件 Append:date_log.sh
while true
do
    cur_time=`date +"%Y-%m-%d,%H:%M:%S"`
    echo "[INFO]" $cur_time >> date_log.log
    sleep 1s
done
  1. 后台启动 date_log.sh:sh date_log.sh &
  2. tail
  • tail -n5 file or tail -5 file :打印文件最后 5 行
    在这里插入图片描述

  • tail -f -n5 file:-f —— --follow[={name|descriptor}] (伴随着文件增长输出追加数据,缺省为 descriptor 文件描述符)
    在这里插入图片描述

  • tail -F -n5 file:-F —— --follow=name --retry (–retry keep trying to open a file if it is inaccessible 如果文件不可访问,不断重试打开文件)

    • 如果文件名称改掉之后,还想继续跟踪原文件名称对应的尾部内容,就得使用 -F 选项而不是 -f 选项 (即,要想跟踪会更名的日志的话,用 tail -F 而不是 tail -f,如 采用 log4j 日志时,每隔 1 个小时生成一个新的日志文件,当前的日志输出在 LOG4J.LOG 中,当一个小时过去后,log4j 会将 LOG4J.LOG 改名成 LOG4J.yyyy-mm-dd-HH 的形式)
    • 手动改名,tail -F -n file 的输出如下
      在这里插入图片描述
2. 替换文件 字符 || Word:sed

SED:参考 https://blog.csdn.net/Olivia_Vang/article/details/104091358 & man

2.1 命令使用介绍
  • -i[SUFFIX], --in-place[=SUFFIX]:edit files in place (makes backup if SUFFIX supplied),在某位置编辑文件,即会更改原文件
  • sed s 命令 s/regexp/replacement/:Attempt to match regexp against the pattern space,即查找替换命令,“(作用范围)s/替换目标/替换值/替换目标选项”
    • 作用范围:单个数字;数字,数字;数字,+数字(某数字行及下数几行);数字,$(某数字行到最后一行)
    • 替换目标选项:g —— 作用范围内行的所有查找目标,而不仅是第一个查找目标
  • sed y 命令:略
2.2 Demo 文件:pet.txt
dog,dog
cat,cat
dog,cat
cat,dog
dog,cat,cat
cat,dog,dog
dog,cat,cat,dog,cat
monkey

在这里插入图片描述

2.3 文件内容替换案例
  1. sed 's/cat/dog/' pet.txt:作用于 pet.txt 的每一行并替换每行出现的第一个 cat

    在这里插入图片描述

  2. sed 's/cat/dog/g' pet.txt:作用于 pet.txt 的每一行并替换每行所有的 cat

    在这里插入图片描述

  3. sed '1,5s/cat/dog/g' pet.txt:作用于 pet.txt 的 1 到 5 行并替换每行所有的 cat

    在这里插入图片描述

  4. sed '5,$s/cat/dog/g' pet.txt:作用于 pet.txt 的 5 到最后一行并替换每行所有的 cat

  5. sed '4,+2s/cat/dog/g' pet.txt:作用于 pet.txt 的 指定行 4 及其后 2 行并替换每行所有的 cat

    在这里插入图片描述

  6. sed '7s/.*/dog/g' pet.txt:作用于第 7 行,整行替换 (.*) 为 dog,可以不带 g

    在这里插入图片描述
    在这里插入图片描述

  7. sed '8s/./dog/g' pet.txt:作用于第 8 行,整行字符替换 (.) 为 dog,不带 g 替换第一个字符

    在这里插入图片描述
    在这里插入图片描述

欢迎补充

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

那些你可能遇到的 Linux 命令?什么,你还不知道?赶紧收藏?完善中! 的相关文章

  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • 在 Linux 上使用多处理时,TKinter 窗口不会出现

    我想生成另一个进程来异步显示错误消息 同时应用程序的其余部分继续 我正在使用multiprocessingPython 2 6 中的模块来创建进程 我试图用以下命令显示窗口TKinter 这段代码在Windows上运行良好 但在Linux上
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l

随机推荐

  • Java 两点经纬度计算距离和角度

    角度 计算两点对于正北方向的朝向角度 0 360 param start format latitude 30 longitude 120 param end private static double bearing List
  • UEFI入门必读的12本书

    作者简介 罗冰 系统安全 特别是物理隔离领域 专家 主导开发网络隔离卡 双网隔离机 国产隔离系统 单向光传输等各类安全产品 拥有十几项发明和实用新型专利 致力于UEFI技术的研究 实践和推广 在CSDN和知乎上设有 UEFI开发探索 专栏
  • UE4(unreal engine4)蒙太奇动画删除不想要的帧数

    UE4系列文章目录 文章目录 UE4系列文章目录 前言 一 问题原因 二 具体操作步骤 前言 UE4 unreal engine4 蒙太奇动画删除不想要的帧数 当我们在UE4中导入一个fbx骨骼动画 当我们想要截取动画中某些不想用的帧时 点
  • 软件版本号命名规范_产品版本命名的规范与规则

    上一篇文章我们对产品的版本迭代的方法进行了一些总结 本篇文章我会针对产品的版本命名 验收 发布这三个层面 来总结一下我自己的想法 希望能对大家有所帮助 01 产品版本命名的规范与规则 1 1 版本命名规范 软件版本号由主版本号 次版本号 修
  • springboot后台获取不到前台Vue日期问题解决

    一 实体类字段写法如下 JsonFormat pattern yyyy MM dd timezone GMT 8 private Date sendTime Vue使用element ui写法
  • 4.2、Flink任务怎样读取文件中的数据

    目录 1 前言 2 readTextFile 已过时 不推荐使用 3 readFile 已过时 不推荐使用 4 fromSource FileSource 推荐使用 1 前言 思考 读取文件时可以设置哪些规则呢 1 文件的格式 txt cs
  • (二)程序语言设计基础

    目录 1 程序设计语言概述 1 1 基本概念 1 1 1 低级语言和高级语言 1 1 2 编译程序和解释程序 1 1 3 程序设计语言的定义 1 1 4 程序设计语言的分类 1 2 程序设计语言的基本成分 1 2 1 数据成分 1 2 2
  • 2022最新android设备uuid、udid使用教程​

    前言 udid UDID是Unique Device Identifier的缩写 中文意思是设备唯一标识 uuid UUID是Universally Unique Identifier的缩写 中文意思是通用唯一识别码 简言之 udid对应某
  • elasticsearch 中text与keyword的区别

    创建索引 PUT ellis mappings properties name type text fields keyword type keyword ignore above 256 age type long 我们可以看到name类
  • VBA常用语法

    最近接触了一下VBA编程 才知道Excel还能编程 而且还如此强大 真的是惊呆了 话不多说 先了解一下VBA常用的语法吧 1 基础语法 高级for循环 Function deleteArrayByIndex list As String D
  • oracle获取随机记录

    oracle获取随机记录 select from select from ford car order by dbms random value where rownum lt 1001
  • 【vision transformer】DETR原理及代码详解(三)

    transformer 端到端目标检测DETR项目实践及代码详解 Paddle Detr git PaddleViT object detection DETR at develop BR IDL PaddleViT GitHub 数据集及
  • Redis SDS简单动态字符串

    结构体定义 本质上说就是用C语言来实现基本的面向对象 来对底层的字符串进行表示 方便上层使用 为调用者减少负担 typedef char sds struct sdshdr int len int free char buf 举例常用操作
  • 搭建JMeter分布式测试环境

    分布式测试概述 现在我们来了解如何使用多台机器来执行压力测试 也就是所谓的分布式测试 当我们模拟大量的并发虚拟用户时 比如我们要起10万 100万甚至更多的并发用户时 一台负载机器可能就满足不了我们需要的用户量 此时 就需要使用多台主机搭建
  • Git入门--自定义标签

    忽略特殊文件 忽略某些文件时 需要编写 gitignore gitignore文件本身要放到版本库里 并且可以对 gitignore做版本管理 配置别名 git config global alias co checkout 用co来代替c
  • FFmpeg源码分析:av_register_all()注册封装器与解封装器

    FFmpeg中av register all 函数用于注册所有muxers demuxers与protocols FFmpeg4 0以前是用链表存储muxer demuxer FFmpeg4 0以后改为数组存储 并且av register
  • SPP原理和代码

    空间金字塔池化 Spatial Pyramid Pooling SPP 原理和代码实现 Pytorch 一 为什么需要SPP 首先需要知道为什么需要SPP 我们都知道卷积神经网络 CNN 由卷积层和全连接层组成 其中卷积层对于输入数据的大小
  • 众享比特董事长严挺:数字藏品在国内有三大发展趋势

    2022年11月2日 巴比特主办的温州元宇宙月系列活动之 数字藏品 虚拟人 元宇宙营销新策略 论坛在温州召开 众享比特董事长严挺 众享链网发起人严挺出席论坛并进行主题为 元宇宙在国内落地的一些实践分享 的演讲 温州元宇宙主题月秉承 拥抱数字
  • Hyperledger fabric2.4 搭建自己的网络

    1 使用cryptogen工具生成证书 1 1 将fabric samples bin目录下的二进制文件复制到 usr local bin目录 以便全局使用这些命令 cd fabric samples bin cp usr local bi
  • 那些你可能遇到的 Linux 命令?什么,你还不知道?赶紧收藏?完善中!

    文章目录 一 Linux 进程 1 通过进程名查找进程号 1 1 ps aux ps ef diff 1 2 ps aux ps aux 什么 它们不一样 1 3 grep awk 取出进程号 取出进程号并 Kill 2 通过进程号查看进程