Как проверить, открыт ли в настоящее время рабочий процесс корнем или пользователем

Вот сценарий жемчуга, который открывает файлы (данный как параметры командной строки) в UTF-16 (порядок байтов, обнаруженный через BOM), и считает строки.

#! /usr/bin/env perl
use strict;
use warnings;

while (my $file = shift @ARGV) {
    my $fh;
    if (!open($fh, '<:encoding(UTF-16)', $file)) {
        print STDERR "Failed to open [$file]: $!\n";
        next;
    }
    my $count = 0;
    $count++ while (<$fh>);
    print "$file: $count\n";
    close $fh;
}

(Умирает, если BOM не понят.)

2
04.06.2013, 01:13
1 ответ

Можно использовать ps -o ruser= или ps -o uid=:

$ ps -p 930 -o ruser=
root
$ ps -C cron -o ruser=
root
$ [[ $(ps -C cron -o uid=) -eq 0 ]]; echo $?
0

- p соответствует pid и-C названием команды. PS OS X не поддерживает-C, но можно использовать pgrep:

$ ps -p $(pgrep -x cron) -o ruser=
root
3
27.01.2020, 22:06

Теги

Похожие вопросы