[systemd-devel] The behavious of systemctl [from fedora-devel]

Kok, Auke-jan H auke-jan.h.kok at intel.com
Mon Jun 20 08:39:44 PDT 2011


On Mon, Jun 20, 2011 at 12:09 AM, Aaron Sowry <aaron+rh at aeneby.se> wrote:
> Hello,
>
> I've been wanting to discuss the default behaviour of systemctl, which I began
> doing on fedora-devel (see [1] for start of thread) before it was pointed out
> that systemd-devel is probably a more appropriate place for discussion.
>
> For those who can't be bothered reading through the original thread, I'll try to
> summarise:
>
> systemctl implements a lot of default behaviours which differ depending on
> whether the output is tty or not. These include:
>
> - Automatically forking a pager and piping output to it if the output is tty.
>  This results in a number of problems, including RH #713707 which means that
>  the user will get no output on tty if there is no supported pager available.
>  --no-pager has been provided to disable this, and $SYSTEMD_PAGER is being
>  considered[2] as a workaround for non-supported pagers.
>
> - Column headers will be displayed on tty, but not otherwise. The assumption
>  here seems to be that output to non-tty channels is not destined for human
>  eyes. Currently, there is no way to force column headers on non-tty channels.
>
> - It has been suggested[3] that --full is implicit when outputting to non-tty
>  channels, however I am unable to reproduce this behaviour on Fedora 15.
>  Assuming that this will be the default behaviour though, we have a similar
>  problem to the point above, since there is currently no way to disable --full
>  on non-tty channels.
>
> As far as I see it, then, we have two options:
>
> 1) Continue providing workarounds such as $SYSTEMD_PAGER (and possibly something
>   like --no-full and --force-headers) to mitigate behaviour imposed on users by
>   developers; or
>
> 2) Stop making assumptions about what users want, and simply send output to
>   stdout in all cases unless the user specifies otherwise.
>
> In case it wasn't obvious, I am in favour of 2).

This greatly has my preference.

I realize that the output of 'systemctl' is rather awkward for the
average shell window, but there are so many other commands that output
awkward amounts of data that piping though a pager no longer has any
particular benefit.

I also find myself just using --full | less, and I'd be poor if I had
to pay someone for every time I have typed `systemctl | less` :)

Auke


More information about the systemd-devel mailing list