Linux ac 命令

Linux ac 命令

Linux ac 命令主要用来打印用户连接系统的时间统计信息。 Linux ac 命令主要根据当前系统的wtmp文件中的记录的用户登录或者退出系统的信息来输出一个关于用户连接系统的时间报告。默认情况下,是以小时为最小计量单位。比如说用户登录系统的总时间报告。

统计文件wtmp 主要是有init 按到login 进程来维护。 如果该文件不存在,ac命令或者login 都不会创建该文件,当然也就不能记录统计信息了。如果需要的话,可以手动来创建一个0字节大小的文件,并将其命名为wtmp。

Linux a2p 命令参数

ac [ -d | --daily-totals ] [ -y | --print-year ] [ -p | --individual-totals ]
[ people ] [ -f | --file file name ] [ -a | --all-days ] [ --complain ]
[ --reboots ] [ --supplants ] [ --timewarps ] [ --compatibility ]
[ --tw-leniency num ] [ --tw-suspicious num ] [ -z | --print-zeros ]
[ --debug ] [ -V | --version ] [ -h | --help ]

选项说明:

-d,–daily-totals 只打印每天的连接时间统计报告, 输出如下:

Apr  10 total     4.17
Apr  11  total    5.10
Apr  12  total    6.23
Apr  13  total    7.10
Apr  14  total    8.30
-p, –individual-totals 打印所有用户的连接时间总和,并显示每个用户的连接时间总和,输出如下:

auser      3.4
buser      5.4
cuser      6.4
duser      7.4
euser      8.4
people 该选项指定一个用户名列表,打印出指定用户名列表里的用户的总的连接时间。 该名用户名列表可以通过空格来分割,比如: ac user1 user2,那么就会统计出user和user2 的总的连接时间
-f, –file file name 从filename里读取文件内容,而不是从系统默认的wtmp文件里读。
–complain 当wtmp文件有问题的时候,打印出相关的错误信息。
-V, –version 将ac名列的版本信息打印到标准输出
-h, –help 打印ac名列的帮助信息
-y, –print-year 当现实日期的时候,打印年信息
-a, –all-days If printing daily totals, print a record for every day instead of skipping intervening days where there is no login activity. Without this flag, time accrued during those intervening days gets listed under the next day where there is login activity.

Linux ac 命令实例

如果你想打印当前用户的系统连接时间,并在现实当天的年月日信息,执行下面的命令:

# ac  -d –y

命令输出如下:

Apr  6 2018          total       45.42
Apr  7 2018          total       69.84
Apr  8 2018          total       50.96
Apr 20 2018         total       37.69
Apr 22 2018         total        2.22
Apr 22 2018         total       20.20
Apr 24 2018         total       48.00
Apr 25 2018         total       34.34
Apr 26 2018         total       56.76
Apr 27 2018         total       66.42
Apr 28 2018         total       70.28
Apr29 2018         total       40.90
Apr 20 2018         total       22.29
Apr 23 2018         total      256.54
Apr 24 2018         total       67.72
Today                    total      233.35

 

 

Linux a2p 命令

Linux a2p 命令

Linux a2p 命令主要用来在命令行下将awk脚本文件转换成可以实现相同功能的Perl脚本,并将代码输出到标准输出上。

Linux a2p 命令参数

A2p [选项] [文件名]

选项说明:

-D<number> : 设置脚本调试标记。
-F<character> :  该选项可以让a2p命令认为awk脚本会指定-F选项来执行
-n<fieldlist> :   如果输入不能被拆分成数组,那么需要输入并通过特殊符号分割的字段名。 如: a2p -7 -nlogin.password.uid.gid.gcos.shell.home

-<number> :   让a2p命令始终认为输入会包含多字段。
-o  :  告诉a2p使用旧的awk行为。

Linux a2p 命令实例

假如在当前目录下有一个名为fio.awk 的awk脚本文件,那么可以执行下面的a2p命令来将该脚本转换成perl语言的代码。

执行命令如下:

#a2p fio.awk

命令输出如下:

[root@Devops ~]# cat fio.awk
#! /usr/bin/awk -f
BEGIN {
    x=0
    do {
        print x;
        x+=1;
    }
    while(x<=10);
}
[root@Devops ~]# a2p fio.awk

#!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if $running_under_some_shell;
# this emulates #! processing on NIH machines.
# (remove #! line above if indigestible)

eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift;
# process any FOO=bar switches

$, = ' ';                   # set output field separator
$\ = "\n";                  # set output record separator
$X = 0
do {
    print $X;
    $X += 1;
} while ($X <= 10);

这个命令将会先读取fio.awk脚本文件,然后将实现相同功能的perl脚本代码输出到标准输出。 如果你想将输出的perl代码保存到一个文件里,那么可以执行下面的命令:

#a2p fio.awk >fio.pl

命令输出如下:

[root@Devops ~]# a2p fio.awk >fio.pl

[root@Devops ~]# ls fio.pl
fio.pl