1.pgrep 命令
想要查找流程及其详细信息?
pgrep命令可以帮助我们解决这个问题。与用于从文件和输出中查找字符串的
grep命令一样,pgrep命令对进程执行相同的操作。简单来说,
pgrep命令将为我们提供正在运行中的进程 PID。下面介绍如何使用
pgrep命令的各种示例。要使用
pgrep命令,必须遵循给定的命令语法:
pgrep [options] pattern在这里,pattern 将指定输出的参数。
下面列举一些具体的实例:
1.1使用 pgrep 命令查找特定进程的 PID
要找到特定进程的 PID,只需遵循给定的语法即可:
pgrep -u username process_name假设想为用户 sagar 查找 ssh 的进程 ID,使用以下命令:
pgrep -u sagar ssh1.2获取用户拥有的进程数
如果想了解特定用户正在使用的进程数量,可以在
pgrep命令后加上-c和-u选项,并附上用户名,如下所示:
pgrep -c -u username例如,要查找名为 sagar 的用户拥有的进程数:
pgrep -c -u sagar也可以合并多个用户的进程数,可以按列分隔它们:
pgrep -c -u user-1,user-2比如,要查询root 和sagar两个用户的进程:
1.3以不区分大小写的方式搜索进程
默认情况下,
pgrep工具是区分大小写的,因此可能无法找到所需的进程,但可以通过使用-i选项切换到不区分大小写的模式:
pgrep -i process_name例如,要查找 firefox 但使用了所有大写字母,它返回了正确的结果:
pgrep -i FIREFOX1.4列出正在进行的进程及其名称和 PID
如果你想列出每个正在进行的进程及其名称和 PID,可以使用
-l选项:
pgrep -u username -l例如,下面列出了与名为 sagar 的用户相关的每个正在进行的进程:
pgrep -u sagar -l1.5查找用于启动当前进程的命令
pgrep工具还允许用户通过使用-a选项查看用于启动当前进程的命令:
pgrep -u username -a假设正在查找以
root用户身份执行的当前进程的命令,那么可以这样操作:
pgrep -u root -a1.6查找最近启动的进程
如果想查找最近启动的进程,可以使用
-n选项轻松找到:
pgrep -n也可以将
-n与-l搭配使用,这样可以获取更有用的输出,因为它还会显示进程名称:
pgrep -n -u sagar -l1.7查找 Linux 上运行时间最长的进程
如果想查找系统中运行时间最长的进程,
pgrep工具可以在使用-o选项时实现这一功能:
pgrep -o例如,想查找用户(sagar)运行时间最长的进程,可以使用以下命令:
pgrep -u sagar -o -l2.flock 命令
Linux 中的
flock命令可以从脚本或命令行管理文件锁,确保一次只有一个进程可以访问文件,从而防止因多个进程同时访问同一文件而导致的数据损坏。简单来说,
flock(文件锁)会锁定文件,使得只有一个进程可以访问该文件,并限制其他进程使用该文件,以防止数据损坏。这种情况通常发生在多个进程尝试使用同一文件时。下面通过多个示例展示如何使用
flock命令。使用
flock命令时需要遵循的基本语法:
flock [options] file [command]
[options]:用于修改flock命令的默认行为。
file:指定flock命令的目标文件。
[command]:一个可选参数,用于指定在flock获取锁后需要执行的命令。2.1等待锁被释放(默认行为)
想锁定文件并对其执行命令,但如果锁已经被另一个进程获取了怎么办?等待锁被释放是一个方法。
要实现这一点,不需要任何额外的选项,因为这是
flock的默认行为,它会等待直到锁被释放。以下是实现方法:
flock /path/to/file --command "the_actual_command"为演示这一点,下面并排对同一个文件使用了 flock 命令,因此第一次执行将首先获取锁,同时第二次执行将等待锁被释放。
在一侧使用
sleep命令,在另一侧使用echo命令:如上图,首先在左侧窗口中执行了
sleep命令,这意味着锁被占用了 3 秒,与此同时,右侧窗口的命令也被执行了。因此,
echo命令(在右侧窗口执行)需要等待 3 秒才能执行。2.2如果文件被锁定,则停止
虽然等待文件锁被释放是一个不错的选择,但有时我们希望快速完成任务。如果文件被锁定,你可能更倾向于改变策略,而不是等待锁被释放。
为此,需要使用以下
-n选项:
flock -n /path/to/file --command "the_actual_command"以下是目标文件被锁定时的行为方式:
在上面的示例中,左侧窗口的命令锁定了文件 3 秒,而右侧窗口尝试在文件被锁定时访问同一文件。
结果,它没有返回任何内容,并且不会等待文件锁被释放。
2.3使用共享锁
也称为读锁,它允许多个进程同时访问共享资源而不会相互干扰。
当希望允许多个进程读取特定文件但限制写入访问时,这非常有用。
要使用共享锁,可以使用
-s选项,如下所示:
flock -s /path/to/file <command_to_execute>作为参考,将在同一时刻使用两次
-s选项,由于这两个命令都只是尝试读取文件内容,因此它们都会被执行:2.4解锁文件
虽然锁会自动释放,但有时可能希望手动释放锁以完成任务,为此,你需要使用
-u选项,如下所示:
flock -u /path/to/file --command "actual_command"为了演示这一点,对一个文件使用
flock命令锁定它,然后在另一侧使用-u选项来展示如何解锁:如果没有使用
-u选项,它将不允许使用该文件。以下是一个实际示例:
8个Linux进程管理命令详解及示例(三):pgrep和flock命令
独行soc2025-03-01 15:49
相关推荐
liulilittle6 分钟前
LwIP协议栈MPA多进程架构penguin_bark28 分钟前
C++ 异步编程(future、promise、packaged_task、async)Wang's Blog35 分钟前
Linux小课堂: Vim与Emacs之Linux文本编辑器的双雄格局及Vim安装启动详解观山岳五楼37 分钟前
unbuntu系统配置IPV6的三种模式又是忙碌的一天43 分钟前
Java基础 与运算程序猫.1 小时前
学生管理系统m0_748241231 小时前
Java注解与反射实现日志与校验运维行者_1 小时前
AWS云服务故障复盘——从故障中汲取的 IT 运维经验王道长服务器 | 亚马逊云1 小时前
AWS Systems Manager:批量服务器管理的隐藏利器一成码农1 小时前
3w字一文讲透Java IO











