Linux系统之pinky 命令详解 - 实践

pinky 命令详解

一、命令概述

pinkyGNU coreutils 中的轻量级用户信息查询工具,定位为 finger 命令的简化版本,核心功能是读取 /var/run/utmp 文件(记录当前系统登录用户的临时数据),输出用户的关键信息(如登录状态、所在终端、登录时间等)。

finger 相比,pinky 体积更小、输出更简洁,默认仅显示核心信息,适合快速查看当前在线用户状态。

二、命令语法

pinky [OPTION]... [USER]...
  • OPTION:控制输出格式的选项(如长格式/短格式、信息过滤),可选;
  • USER:指定要查询的用户名(可多个,空格分隔),可选;
    • 若不指定 USER,默认查询所有当前在线用户的信息;
    • 若指定 USER,仅输出该用户的信息(若用户未登录,可能无输出)。

三、选项详解

pinky 的选项主要分为「格式控制选项」(短格式/长格式)和「帮助版本选项」,其中短格式(-s)为默认输出模式,长格式(-l)需显式启用。

选项功能描述适用格式示例
-l启用长格式输出,显示更详细的用户信息(如家目录、登录shell、项目/计划文件内容)。长格式(强制)pinky -l root(查看 root 用户的详细信息)
-b长格式专用:省略用户的家目录(Home Directory)登录shell 信息。长格式pinky -l -b root(长格式查看 root,不显示家目录和 shell)
-h长格式专用:省略用户的项目文件(Project File,通常为 ~/.project) 内容。长格式pinky -l -h root(长格式查看 root,不显示项目文件)
-p长格式专用:省略用户的计划文件(Plan File,通常为 ~/.plan) 内容。长格式pinky -l -p root(长格式查看 root,不显示计划文件)
-s启用短格式输出(默认模式),仅显示核心信息(用户名、终端、登录时间、远程主机等)。短格式(默认)pinky -s(默认短格式查看所有在线用户)
-f短格式专用:省略输出的列头(表头) 行(如 “Login Name” “Tty” 等标题)。短格式pinky -s -f(短格式查看所有用户,无表头)
-w短格式专用:省略用户的全名(Full Name) 信息。短格式pinky -s -w root(短格式查看 root,不显示全名)
-i短格式专用:省略用户的全名远程主机(Remote Host) 信息。短格式pinky -s -i(短格式查看所有用户,不显示全名和远程主机)
-q短格式专用:省略用户的全名远程主机空闲时间(Idle Time) 信息。短格式pinky -s -q(短格式查看所有用户,仅显示用户名、终端、登录时间)
--help显示帮助信息并退出。通用pinky --help
--version显示版本信息并退出(如 GNU pinky 8.32)。通用pinky --version

四、输出格式说明

4.1 短格式(默认 -s

默认输出包含列头,核心字段如下(以 pinky 为例):

Login Name   Tty      Idle  When         Where
root         tty1         Wed 10:00:01  console
user1        pts/0        Wed 10:30:45  192.168.1.100
  • Login Name:用户名;
  • Tty:登录终端(tty1 为本地终端,pts/0 为远程 SSH 终端);
  • Idle:空闲时间(无活动的时长,空表示当前活跃);
  • When:登录时间;
  • Where:登录来源(console 为本地控制台,IP 为远程主机地址)。

4.2 长格式(-l

长格式输出更详细,包含短格式所有信息,额外补充家目录、shell、项目/计划文件等(以 pinky -l root 为例):

Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
On since Wed Oct 11 10:00:01 2024 on tty1 from console
No mail.
No Plan.
  • Login:用户名;
  • Name:用户全名(来自 /etc/passwd 的注释字段);
  • Directory:家目录路径;
  • Shell:默认登录 shell;
  • On since:登录时间、终端、来源;
  • Mail:邮件状态(是否有未读邮件);
  • Plan:计划文件内容(若 ~/.plan 存在则显示,否则为 No Plan);
  • Project:项目文件内容(若 ~/.project 存在则显示,否则为 No Project)。

五、使用示例

示例 1:默认短格式查看所有在线用户

pinky

输出:

Login Name   Tty      Idle  When         Where
root         tty1         Wed 10:00:01  console
user1        pts/0        Wed 10:30:45  192.168.1.100
user2        pts/1        Wed 11:15:22  10.0.0.5

示例 2:短格式查看指定用户,省略表头和全名

pinky -s -f -w user1

输出(无表头,无全名):

user1        pts/0        Wed 10:30:45  192.168.1.100

示例 3:长格式查看 root 用户,省略计划文件

pinky -l -p root

输出(无计划文件内容):

Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
On since Wed Oct 11 10:00:01 2024 on tty1 from console
No mail.
No Project.

示例 4:长格式查看用户,省略家目录和 shell

pinky -l -b user2

输出(无家目录和 shell):

Login: user2                            Name: User Two
On since Wed Oct 11 11:15:22 2024 on pts/1 from 10.0.0.5
No mail.
Plan:
  Today's task: finish the report.
Project:
  Current project: devops automation

六、注意事项

  1. 数据来源限制pinky 仅读取 /var/run/utmp 文件,该文件记录的是当前登录用户的临时信息,因此:

    • 无法查询未登录用户的信息;
    • 若用户登录后退出,utmp 中会删除该用户记录,pinky 也无法查询。
  2. 文件权限依赖~/.plan~/.project 文件的内容仅在用户可读时才会显示(若文件权限为 600,则仅所有者可查看,其他用户用 pinky -l 查看时会显示 No Plan/No Project)。

  3. finger 的区别finger 功能更丰富(如支持查询远程用户、邮件详情),但体积较大;pinky 轻量简洁,适合嵌入式系统或仅需基础用户信息的场景。

七、相关参考

  • 用户信息源文件/etc/passwd(静态用户信息,如用户名、家目录、shell)、/var/run/utmp(动态登录信息);
  • 类似工具finger(完整用户信息查询)、w(查看当前登录用户及进程)、who(简洁显示登录用户)。
posted @ 2025-11-27 17:19  yangykaifa  阅读(23)  评论(0)    收藏  举报