2014-08-17 14:44:13

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed

If you don't have systemd, then this script dumps:
/usr/sbin/start-statd: line 8: systemctl: command not found

This isn't terribly useful since we ultimately fall back to running
the daemon ourselves, so probe for systemd's existence before we try
to use it.

Signed-off-by: Mike Frysinger <[email protected]>
---
utils/statd/start-statd | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
mode change 100644 => 100755 utils/statd/start-statd

diff --git a/utils/statd/start-statd b/utils/statd/start-statd
old mode 100644
new mode 100755
index dcdaf77..ec9383b
--- a/utils/statd/start-statd
+++ b/utils/statd/start-statd
@@ -1,12 +1,16 @@
-#!/bin/bash -p
+#!/bin/sh
# nfsmount calls this script when mounting a filesystem with locking
# enabled, but when statd does not seem to be running (based on
# /var/run/rpc.statd.pid).
# It should run statd with whatever flags are apropriate for this
# site.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
-if systemctl start rpc-statd.service
-then :
-else
- exec rpc.statd --no-notify
+
+# First try systemd if it's installed.
+if systemctl --help >/dev/null 2>&1; then
+ # Quit only if the call worked.
+ systemctl start rpc-statd.service && exit
fi
+
+# Fall back to launching it ourselves.
+exec rpc.statd --no-notify
--
2.0.0



2014-08-18 17:04:41

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed



On 08/17/2014 10:44 AM, Mike Frysinger wrote:
> If you don't have systemd, then this script dumps:
> /usr/sbin/start-statd: line 8: systemctl: command not found
>
> This isn't terribly useful since we ultimately fall back to running
> the daemon ourselves, so probe for systemd's existence before we try
> to use it.
>
> Signed-off-by: Mike Frysinger <[email protected]>
Committed... but I used 'rpm -q systemd' instead of 'systemctl --help'
to test for the existences of systemd

# First try systemd if it's installed.
-if systemctl --help >/dev/null 2>&1; then
+if rpm -q systemd > /dev/null 2>&1; then
# Quit only if the call worked.
systemctl start rpc-statd.service && exit


steved.

> ---
> utils/statd/start-statd | 14 +++++++++-----
> 1 file changed, 9 insertions(+), 5 deletions(-)
> mode change 100644 => 100755 utils/statd/start-statd
>
> diff --git a/utils/statd/start-statd b/utils/statd/start-statd
> old mode 100644
> new mode 100755
> index dcdaf77..ec9383b
> --- a/utils/statd/start-statd
> +++ b/utils/statd/start-statd
> @@ -1,12 +1,16 @@
> -#!/bin/bash -p
> +#!/bin/sh
> # nfsmount calls this script when mounting a filesystem with locking
> # enabled, but when statd does not seem to be running (based on
> # /var/run/rpc.statd.pid).
> # It should run statd with whatever flags are apropriate for this
> # site.
> PATH="/sbin:/usr/sbin:/bin:/usr/bin"
> -if systemctl start rpc-statd.service
> -then :
> -else
> - exec rpc.statd --no-notify
> +
> +# First try systemd if it's installed.
> +if systemctl --help >/dev/null 2>&1; then
> + # Quit only if the call worked.
> + systemctl start rpc-statd.service && exit
> fi
> +
> +# Fall back to launching it ourselves.
> +exec rpc.statd --no-notify
>

2014-08-19 14:07:02

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed



On 08/18/2014 07:57 PM, Mike Frysinger wrote:
> On Mon 18 Aug 2014 13:04:35 Steve Dickson wrote:
>> On 08/17/2014 10:44 AM, Mike Frysinger wrote:
>>> If you don't have systemd, then this script dumps:
>>> /usr/sbin/start-statd: line 8: systemctl: command not found
>>>
>>> This isn't terribly useful since we ultimately fall back to running
>>> the daemon ourselves, so probe for systemd's existence before we try
>>> to use it.
>>>
>>> Signed-off-by: Mike Frysinger <[email protected]>
>>
>> Committed... but I used 'rpm -q systemd' instead of 'systemctl --help'
>> to test for the existences of systemd
>>
>> # First try systemd if it's installed.
>> -if systemctl --help >/dev/null 2>&1; then
>> +if rpm -q systemd > /dev/null 2>&1; then
>> # Quit only if the call worked.
>> systemctl start rpc-statd.service && exit
>
> what about all the other distros not using rpm ? my version was distro
> agnostic.
Good point... I just committed your original version... Thanks!

steved.


2014-08-18 23:57:50

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed

On Mon 18 Aug 2014 13:04:35 Steve Dickson wrote:
> On 08/17/2014 10:44 AM, Mike Frysinger wrote:
> > If you don't have systemd, then this script dumps:
> > /usr/sbin/start-statd: line 8: systemctl: command not found
> >
> > This isn't terribly useful since we ultimately fall back to running
> > the daemon ourselves, so probe for systemd's existence before we try
> > to use it.
> >
> > Signed-off-by: Mike Frysinger <[email protected]>
>
> Committed... but I used 'rpm -q systemd' instead of 'systemctl --help'
> to test for the existences of systemd
>
> # First try systemd if it's installed.
> -if systemctl --help >/dev/null 2>&1; then
> +if rpm -q systemd > /dev/null 2>&1; then
> # Quit only if the call worked.
> systemctl start rpc-statd.service && exit

what about all the other distros not using rpm ? my version was distro
agnostic.
-mike


Attachments:
signature.asc (819.00 B)
This is a digitally signed message part.

2014-08-19 01:06:14

by NeilBrown

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed

On Mon, 18 Aug 2014 19:57:49 -0400 Mike Frysinger <[email protected]> wrote:

> On Mon 18 Aug 2014 13:04:35 Steve Dickson wrote:
> > On 08/17/2014 10:44 AM, Mike Frysinger wrote:
> > > If you don't have systemd, then this script dumps:
> > > /usr/sbin/start-statd: line 8: systemctl: command not found
> > >
> > > This isn't terribly useful since we ultimately fall back to running
> > > the daemon ourselves, so probe for systemd's existence before we try
> > > to use it.
> > >
> > > Signed-off-by: Mike Frysinger <[email protected]>
> >
> > Committed... but I used 'rpm -q systemd' instead of 'systemctl --help'
> > to test for the existences of systemd
> >
> > # First try systemd if it's installed.
> > -if systemctl --help >/dev/null 2>&1; then
> > +if rpm -q systemd > /dev/null 2>&1; then
> > # Quit only if the call worked.
> > systemctl start rpc-statd.service && exit
>
> what about all the other distros not using rpm ? my version was distro
> agnostic.
> -mike

distro-agnotic is certainly important.
I would have gone with:

diff --git a/utils/statd/start-statd b/utils/statd/start-statd
index dcdaf7763f18..414f73f58096 100644
--- a/utils/statd/start-statd
+++ b/utils/statd/start-statd
@@ -5,7 +5,7 @@
# It should run statd with whatever flags are apropriate for this
# site.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
-if systemctl start rpc-statd.service
+if systemctl start rpc-statd.service > /dev/null 2>&1
then :
else
exec rpc.statd --no-notify


why call systemctl twice (once with --help and once with "start")?

NeilBrown


Attachments:
signature.asc (828.00 B)

2014-08-19 03:27:55

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: clean up output when systemd is not installed

On Tue 19 Aug 2014 11:06:03 NeilBrown wrote:
> On Mon, 18 Aug 2014 19:57:49 -0400 Mike Frysinger <[email protected]> wrote:
> > On Mon 18 Aug 2014 13:04:35 Steve Dickson wrote:
> > > On 08/17/2014 10:44 AM, Mike Frysinger wrote:
> > > > If you don't have systemd, then this script dumps:
> > > > /usr/sbin/start-statd: line 8: systemctl: command not found
> > > >
> > > > This isn't terribly useful since we ultimately fall back to running
> > > > the daemon ourselves, so probe for systemd's existence before we try
> > > > to use it.
> > > >
> > > > Signed-off-by: Mike Frysinger <[email protected]>
> > >
> > > Committed... but I used 'rpm -q systemd' instead of 'systemctl --help'
> > > to test for the existences of systemd
> > >
> > > # First try systemd if it's installed.
> > >
> > > -if systemctl --help >/dev/null 2>&1; then
> > > +if rpm -q systemd > /dev/null 2>&1; then
> > >
> > > # Quit only if the call worked.
> > > systemctl start rpc-statd.service && exit
> >
> > what about all the other distros not using rpm ? my version was distro
> > agnostic.
> > -mike
>
> distro-agnotic is certainly important.
> I would have gone with:
>
> diff --git a/utils/statd/start-statd b/utils/statd/start-statd
> index dcdaf7763f18..414f73f58096 100644
> --- a/utils/statd/start-statd
> +++ b/utils/statd/start-statd
> @@ -5,7 +5,7 @@
> # It should run statd with whatever flags are apropriate for this
> # site.
> PATH="/sbin:/usr/sbin:/bin:/usr/bin"
> -if systemctl start rpc-statd.service
> +if systemctl start rpc-statd.service > /dev/null 2>&1
> then :
> else
> exec rpc.statd --no-notify
>
>
> why call systemctl twice (once with --help and once with "start")?

because i don't think you want to silence errors from systemd when it's
actually in use. probing with --help tells you whether it exists.
-mike


Attachments:
signature.asc (819.00 B)
This is a digitally signed message part.