supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
From: Oliver Schad <oliver.schad@automatic-server.com>
Cc: supervision@list.skarnet.org
Subject: Re: The "Unix Philosophy 2020" document
Date: Sat, 28 Dec 2019 00:54:07 +0100	[thread overview]
Message-ID: <20191228005407.1bf2a764@dickeberta> (raw)
In-Reply-To: <em4d6333c8-6cfa-44ee-aa68-8ef57b6dec8c@elzian>

[-- Attachment #1: Type: text/plain, Size: 2186 bytes --]

On Fri, 27 Dec 2019 12:32:27 +0000
"Laurent Bercot" <ska-supervision@skarnet.org> wrote:

> As for cgroups-related chainloaders, I could probably write some in
> s6-linux-utils, but wasn't the cgroups interface designed to make
> sure those operations are trivial to implement as small scripts?

I changed in the past sysv init scripts in exactly that way, that they
created a cgroup first at start and killed all processes within that
cgroup at the end.

That where 5? lines of shell. You could provide that system wide, if you
would offer some include mechanism (pre-run, post-stop) or within the
run/finish scripts just include a shell library.

In the first place it would be ok, to have the name of the service
available as an identifier for the cgroup. A random name would only
work if you persist it somewhere and have to manage the clean-up - I
would prefer to use the directory's name of the run script. Is it
available through a environment?

Something like:


##############
run
##############
CGROUP_BASE_DIR=/sys/fs/cgroup/freezer
cgroup=$run_dir

mkdir $CGROUP_BASE_DIR/$cgroup
echo $$ > $CGROUP_BASE_DIR/$cgroup/tasks

# exec or include
exec do_the_real_stuff



##############
finish
##############
CGROUP_BASE_DIR=/sys/fs/cgroup/freezer
cgroup=$run_dir
state_file=$CGROUP_BASE_DIR/$cgroup/freezer.state

echo FROZEN > $state_file
i=0
while ! grep FROZEN $state_file > /dev/null; do
  let i=$i+1
  sleep 0.1
  if [ $i -gt 100 ]; then
    break
  fi
done
kill -9 $(cat $CGROUP_BASE_DIR/$cgroup/tasks)

########################

Disclaimer: this has race-conditions by design. systemd has them as
well. No, they don't say that of course. You can't read the tasks
atomically and change their state to stopped, freeze or whatever. So
they always could fork away.

What you can do is repeat the killing/freezing/stopping until it
succeeds (mabye never).

Best Regards
Oli

-- 
Automatic-Server AG •••••
Oliver Schad
Geschäftsführer
Turnerstrasse 2
9000 St. Gallen | Schweiz

www.automatic-server.com | oliver.schad@automatic-server.com
Tel: +41 71 511 31 11 | Mobile: +41 76 330 03 47

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  parent reply	other threads:[~2019-12-27 23:54 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20190831130730.ki6ma7i5curucowe@caspervector>
     [not found] ` <em5af31b6f-4dd3-4a31-a6cf-beccb100238d@elzian>
     [not found]   ` <20190901091157.bjtfhqq6d2rg75yo@CasperVector>
2019-09-27  8:38     ` Casper Ti. Vector
2019-10-12 17:37       ` Casper Ti. Vector
2019-10-12 18:58         ` Steve Litt
2019-10-12 19:14           ` Casper Ti. Vector
2019-10-13  3:31         ` Casper Ti. Vector
2019-10-13  8:21         ` Oliver Schad
2019-10-13 13:57           ` Casper Ti. Vector
2019-12-08 17:04             ` Casper Ti. Vector
2019-10-14  6:35           ` Jens Rehsack
2019-10-22 15:33         ` Casper Ti. Vector
2019-10-22 16:54           ` Steve Litt
2019-10-22 17:07             ` Casper Ti. Vector
2019-11-17  6:26         ` Casper Ti. Vector
2019-11-17  7:28           ` Casper Ti. Vector
2019-11-24 20:13             ` Guillermo
     [not found]               ` <20191125025202.oqu4ennu3lexnxsa@caspervector>
2019-11-25  2:52               ` Casper Ti. Vector
2019-11-25 14:20                 ` Casper Ti. Vector
2019-11-30 12:13                   ` Jeff
2019-11-30 12:20                     ` Jeff
2019-11-30 12:45                       ` Jeff
2019-11-30 13:29                         ` Laurent Bercot
2019-11-30 14:43                           ` Casper Ti. Vector
2019-11-30 15:01                             ` Jeff
2019-11-30 15:48                               ` Casper Ti. Vector
2019-11-30 16:58                                 ` Jeff
2019-12-26 17:52           ` Casper Ti. Vector
2019-12-27  1:09             ` Oliver Schad
2019-12-27 11:11               ` Casper Ti. Vector
2019-12-27  2:57             ` Steve Litt
2019-12-27 13:54               ` Casper Ti. Vector
2019-12-27 15:37                 ` Casper Ti. Vector
2020-01-04  9:10                   ` Casper Ti. Vector
2020-01-04 18:25                     ` fungal-net
2020-01-05  0:36                       ` Casper Ti. Vector
2020-01-05  6:31                       ` Casper Ti. Vector
2020-01-05  6:54                         ` Casper Ti. Vector
2019-12-27 23:05                 ` Steve Litt
     [not found]               ` <20191227135411.jbtxorloetcvv5bx@caspervector>
     [not found]                 ` <20191227153719.2tt4bbidp3v7t23u@caspervector>
     [not found]                   ` <20200104091013.wesvxvcqxquc5n2h@caspervector>
2020-01-04 12:32                     ` Laurent Bercot
2019-12-27 21:29             ` Steve Litt
2019-12-27 23:34               ` Alex Suykov
2019-12-28 10:35               ` Casper Ti. Vector
2019-10-28 15:34       ` Avery Payne
2019-10-28 15:51         ` Casper Ti. Vector
     [not found]   ` <20190901091157.bjtfhqq6d2rg75yo@caspervector>
     [not found]     ` <20190927083816.tectynx7dzlfcvb7@caspervector>
     [not found]       ` <20191012173743.drzlgnrw4hib6hh4@caspervector>
     [not found]         ` <20191117062644.lt6wfmqwijqqhc5w@caspervector>
     [not found]           ` <20191226175258.o2nsregew6tlqlbu@caspervector>
2019-12-26 19:17             ` Laurent Bercot
2019-12-27 11:23               ` Casper Ti. Vector
2019-12-28  2:24                 ` Alex Suykov
2019-12-28  2:57                   ` eric vidal
2019-12-28 14:04                     ` Alex Suykov
2019-12-28 18:05                       ` Guillermo
2019-12-28 23:19                         ` Oliver Schad
2019-12-28 18:12                       ` Oliver Schad
2019-12-28 21:32                       ` eric vidal
2019-12-28  6:46                   ` Steve Litt
2019-12-28 13:37                     ` Alex Suykov
2019-12-28 13:54                       ` Casper Ti. Vector
2019-12-28 17:41                       ` Oliver Schad
2019-12-28 18:29                         ` Serge E. Hallyn
2019-12-28 23:16                           ` Oliver Schad
2019-12-28 21:31                         ` eric vidal
2019-12-29 16:07                         ` Alex Suykov
2019-12-29 20:32                           ` Oliver Schad
2019-12-28 10:26                   ` Casper Ti. Vector
     [not found]               ` <20191227112309.3fow6vynss2ifw4t@caspervector>
2019-12-27 12:32                 ` Laurent Bercot
2019-12-27 13:48                   ` Casper Ti. Vector
2019-12-27 23:54                   ` Oliver Schad [this message]
2019-12-27 23:56                     ` Oliver Schad
2019-12-28 15:19                       ` Guillermo
2019-12-28 18:16                         ` Oliver Schad
2019-12-28 20:44                   ` Laurent Bercot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191228005407.1bf2a764@dickeberta \
    --to=oliver.schad@automatic-server.com \
    --cc=supervision@list.skarnet.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).