/srv/irclogs.ubuntu.com/2007/02/12/#upstart.txt

=== Keybuk [n=scott@wing-commander.netsplit.com] has joined #upstart
AStormHello.12:48
AStormI heard that you're doing ubuntu init scripts too.12:49
_ionWelcome back. :-)12:49
AStormI'm especially interested in the fsck - esp. not parallelising checks on things on the same physical drive.12:49
AStormI have some ideas I've already implemented, but I'd like to hear yours.12:50
AStormfsck itself isn't that good at checking multiple fses12:52
AStormI wonder how does fsck check if the deviced are on the same physical device...12:54
Mdmajor number?12:59
_ionThat doesn't help much if you're e.g. comparing /dev/sda1 to /dev/volumegroup/foo which happens to be on software RAID-1, which happens to reside on /dev/sda2 and /dev/sdb2.01:00
KeybukI didn't think fsck minded?01:02
_ionI assume fscking /dev/sda1 and /dev/sda2 simultaneously is *very* slow.01:02
_ionI don't see a reason for it not to work, but it's gotta be slow.01:03
=== AstralSt [n=astralst@host-81-190-179-124.gorzow.mm.pl] has joined #upstart
=== AstralSt is now known as AStorm
AStormOk guys, did I miss something?01:09
Keybuknope01:09
AStormpfsck uses blkid_get_devname01:09
AStormWhich will fail with LVM or RAID.01:09
AStorm(fail to spot the use of the same device)01:09
AStormMy idea is to do some ls in /sys01:10
AStormThe dependency info is all exported in sysfs01:10
Keybukwhat's the problem with checking the same device?01:12
AStormseeking01:12
AStormMeans slowdown.01:12
_ion*Huge* slowdown, most likely.01:13
AStormNot all that bad, because most fsck checks are small.01:13
AStormI also wrote a tiny util to detect swap partitions.01:13
AStorm(4K on glibc)01:14
AStormIt could be useful when doing fsck totally automatically.01:14
AStorm(e.g. on HAL event when you hotplug your new shiny USB hard disc)01:16
AStormThough some fsck options could probably fix it for us... if they are correctly implemented, that is01:17
=== cortana [n=sam@62-31-146-25.cable.ubr12.azte.blueyonder.co.uk] has joined #upstart
AStormnot just checking the fstab01:17
AStormYes, it's broken. Will default to ext2.01:19
AStormWe could really use some FS detector.01:19
KeybukAStorm: vol_id can do that01:19
AStormHow?01:20
Keybuk(detect swap partitions)01:20
AStormDidn't work for me here...01:20
AStormAh, now it works. Stupid me.01:21
AStormeven the FS type (if known to the kernel)01:21
AStormOk, then it's no problem at all01:21
AStormthe devices will be discerned by sysfs data.01:22
AStorm( reading /sys/block/*/* and /sys/block/*/*/slaves if present01:23
AStormProbably there's some tool for that in sysfsutils too.01:24
_ionHas there been a lot of progress with the complex-event-config implementation?01:24
AStormIt works here :-)01:26
Keybuk_ion: I've written a parser01:26
Keybukjust need to rewrite that into the actual code and make it nice01:26
AStormis "when x" isomorphic to "start on started x; stop on stopping x"?01:32
Keybukthere's no such thing as "when x" ?01:35
AStormBah.01:38
AStormI meant "with x"01:38
Keybuk"with x" only exists in the complex-event-config01:39
Keybukit's somewhat analogous to "starting x until stopped x", except that there's no serialisation of the two01:40
AStormSo it's more lax?01:41
Keybukyes01:41
AStormNice still.01:41
AStormI'm looking forward to complex-event-config full implementation.01:42
Keybukme too01:58
=== _ion [i=johan@kiviniemi.name] has joined #upstart
=== Amaranth_ [n=travis@ubuntu/member/Amaranth] has joined #upstart
=== Md [i=md@freenode/staff/md] has joined #upstart
=== solemnwarning [n=solemnwa@cpc3-fare2-0-0-cust598.cos2.cable.ntl.com] has joined #Upstart
solemnwarningIs upstart more stable then initng?10:37
=== pkt [n=knoppel@87.203.145.142] has joined #upstart
=== Keybuk [n=scott@quest.netsplit.com] has joined #upstart
=== mbiebl [n=michael@e180122080.adsl.alicedsl.de] has joined #upstart
Keybukhttp://people.ubuntu.com/~scott/complex-event-config.patch02:18
Keybuk\o/02:18
mbieblhehe, cool02:33
mbieblKeybuk: Do you know, if the old sysv init sets the environment variables PREVLEVEL and RUNLEVEL on startup to N and S?02:34
KeybukI have no idea02:34
Keybukthere's an open bug that the example job doesn't do that02:34
KeybukI put the code in, and rc seemed to not work properly02:34
Keybukso I'm not convinced02:34
mbieblIt's quite strange, the Debian udev scripts checks for the presence of these variables (and also splashy)02:36
Keybuk(this might just be a problem with /var/run/utmp, and /var/run not existing, of course)02:36
mbieblBut they are not set by /etc/init.d/rc02:37
mbieblSo, imho they must be set by sysv init.02:37
mbieblI also find it strange, that bootmisc resets /var/run/utmp (to :) in S02:38
Keybukyeah02:39
Keybuksysvinit sets those itself02:39
KeybukI think the bug is that we track the runlevel using /var/run/utmp as the authorative reference02:39
mbieblHard to N and S?02:39
Keybukwhereas sysvinit has an integer in memory that tracks it, and just uses utmp as an update02:40
mbieblyeah, this is quite funny02:40
mbieblif /var/run/utmp persists during reboot02:41
mbieblYou'd get 2 S from runlevel during S02:41
Keybukpretty much the problem I had <g>02:42
mbieblDo you know, if the behaviour of runlevel and PREVLEVEL/RUNLEVEL is specified somewhere?02:42
KeybukI doubt it02:42
KeybukI just used the sysvinit source as a reference for how they should behave02:43
Keybuk0.3.5 is happily somewhat closer than 0.2.7 was02:43
Keybuksince "shutdown" now only generates runlevel change events02:43
mbieblbtw, I modified /etc/even.d/rcS for Debian to set PREVLEVEL/RUNLEVEL unconditionally to N/S02:45
mbieblThis is inconsistent to the output of runlevel at this  stage, but it seems to work fine.02:46
Keybukthat's a good idea :)02:48
mbieblYeah, it's then consistent to runlevel/previous defined in /etc/even.d/rc03:03
AStormKeybuk, as to that init..03:19
AStormGentoo init depends on the fact that the RUNLEVEL is set to S or 1 on start.03:19
AStormHad to fix that.03:20
mbieblAStorm: What about PREVLEVEL?03:23
mbieblDoes the Gentoo init system make any assumptions about the value of this var?03:24
AStormNot at all.03:26
AStorm(also, the runlevel names are special, like sysinit, single, nonetwork, default, reboot - not just numbers - but that's Gentoo-specific)03:27
AStormthe special sysinit runlevel is active only in S and there's explicit check for that03:27
mbieblWhat's the output of runlevel during boot?03:27
AStormHmm?03:28
mbieblOr when you have booted your system completely03:28
AStormCompletely.03:28
AStormI'm running on upstart right now.03:28
AStorm(but totally using Gentoo scripts)03:28
AStorm(except the gettys - that also had to be hacked a bit)03:28
AStormTo be exact, the gettys were running too early03:34
AStormmaking the init process look like crap03:35
AStormCouldn't run them on stopped runlevel ...03:35
AStormBecause it didn't stop03:35
AStormSo I had to hack the last init script to emit that event.03:35
AStormThe always last script is /etc/init.d/local.start03:36
AStorm(due to after * clause in it)03:36
AStorms/stopped runlevel/started runlevel/03:36
Keybukrunlevel is an event04:36
Keybuknot a job04:36
Keybukevents don't have a started or stopped :p04:36
Keybuk(unless you have an /etc/event.d/runlevel, of course)04:37
_ionYay for complex-event-config.patch04:45
Keybukit's still not "official" yet04:46
Keybukit's only gdb-tested, and doesn't have test cases04:46
Keybukand the code is messy at best04:46
Keybukthe implementation has some interesting side-effects too04:46
Keybuke.g.04:46
Keybuk(foo and bar) until baz04:47
Keybukfoo happens, nothing04:47
Keybukbar happens, it gets started04:47
Keybukbaz happens, it gets stopped04:47
Keybuknow, if foo or bar happen, it will be started again04:47
Keybuksince "foo and bar have happened" is satisfied04:47
Keybukthe until only "forgets" the AND combination04:47
KeybukI actually quite like this behaviour, since the other intent can be expressed as:04:48
Keybukfoo until baz and bar until baz04:48
Keybuk(which requires foo and bar to both happen after baz, before it will be started again)04:48
_ionWell, that's exactly what i'd have expected to happen on (foo and bar) until baz04:50
_ion:-)04:50
_ionAgh, sorry. I misread your line as "if foo and bar happen, it will be started again"04:51
_ionPerhaps because there's "foo and bar" directly under the "foo or bar" ;-)04:53
Keybukheh04:56
Keybukafter baz happens, it doesn't require foo and bar to both happen again04:56
Keybukjust one of them04:56
AStormThat's a bug.04:57
Keybukis it though?04:57
AStormIt is. If you want "once" modifier, add it.04:57
AStormfrom once foo and bar until baz04:57
Keybukthe "and" operator is TRUE if either expression has ever been TRUE04:57
_ionFrom the computer's point of view, that's the logical behavior. But from a human's point of view, it might be nicer if the code somehow reset the value of the (foo and bar) expression.04:58
AStormhmm, or even04:58
AStormfrom once foo and once bar until baz04:58
_ion...when baz becomes TRUE04:58
Keybuk_ion: right, so the plan was that until would reset the tree on one side to FALSE when the other side went TRUE04:58
Keybukand act as a flip-flop04:58
AStormSo, if both are satisfied _once_, they don't get reset04:58
Keybukbut that would have interesting interactions later with "with"04:58
AStormBut then... hmm.04:58
AStormWeird.04:58
AStormfoo and once bar04:59
AStormonce foo and bar04:59
AStormBut both once degenerates to on.04:59
=== Seveas [n=seveas@ubuntu/member/seveas] has joined #upstart
AStormNo, it doesn't :-)05:01
AStormThat'd be a nice extension.05:01
AStormon once abc05:01
AStormfor a single-fire event05:01
AStorm(or even make on optional in this case)05:02
AStormLike it?05:04
Keybuknot sure what the behaviour would be05:05
AStormWith once, or with those ands?05:05
AStormThe and should be like logic and05:05
AStormAnd once should set a permanent flag05:05
AStormIt would be transitive too05:06
AStormonce (foo and bar) -> once foo and once bar05:06
AStormsimilar with or...05:10
KeybukI still don't get what "once" does?05:10
AStormthought about adding xor?05:10
AStormKeybuk, acts when the event is fired, but only once05:11
Keybukso how is "once foo" different from "foo" /05:11
Keybukonce foo has been emitted, foo is always TRUE05:11
AStormfoo will fire multiple times05:11
AStormHmm.05:11
Keybuksure, it can affect the tree multiple times05:11
Keybukcan you give me a use case for "once" ?05:11
AStormLet me think...05:12
AStormonce startup-finished... mail me some info05:12
AStormBut then, you could create a one-time event05:12
Keybukwhy not just make it a one-time event in the first place ? :p05:12
AStormIt's much better when you change and05:12
AStormfrom bar and once foo until baz05:13
Keybukchange and?05:13
AStormThis means that if foo is fired once05:13
AStormand baz is fired, we get launched05:13
AStormunlike from bar and foo until baz05:14
KeybukI still don't understand why this is useful, sorry05:14
AStormwhich would mean that if both are fired...05:14
AStormThis means "foo got executed and finished, then on baz, do something"05:14
KeybukI think you're confusing events and jobs?05:15
AStormProbably.05:15
AStormDue to JobEvents :P05:15
Keybukjob events went away05:16
AStormGood.05:16
AStormWell, then and works correctly it seems.05:17
AStorm(except that behaviour is not necessarily intuitive and has to be documented)05:17
Keybukdocumentation is third on my TODO list :p05:18
AStorm:>05:18
AStormCould lend you a hand there. Which format do you prefer?05:18
Keybukdocbook, I guess05:19
AStormCould be asciidoc generated docbook?05:19
Keybukwhat's that?05:19
AStormasciidoc is a plaintext system05:19
AStormhttp://www.methods.co.nz/asciidoc/05:20
AlexExtremehmm05:21
AlexExtremeI could also help with docs05:21
_ionasciidoc looks quite nice.05:23
AlexExtremehmm05:27
AlexExtremethe complex-event-config patch looks good05:27
_ionOoo, nice. http://www.methods.co.nz/asciidoc/music-filter.html05:28
_ionOoo, nice2. http://www.methods.co.nz/asciidoc/source-highlight-filter.html05:28
=== j_ack [n=rudi@p508DA3BD.dip0.t-ipconnect.de] has joined #upstart
=== mbiebl [n=michael@e180122080.adsl.alicedsl.de] has joined #upstart
AlexExtremeKeybuk, how are the new jobs going? or haven't you started work on them?05:48
Keybukslowly, but surely05:49
AlexExtremecool05:49
Keybukshould be done today05:50
_ionYay05:50
AStormI have a question: How would one do normal logging to both console and system log?05:51
AStormUse logger + echo?05:52
Keybukor something like bootlogd or logd, etc.05:53
AStormYes, I was thinking about that logd05:54
AStormHow do you use that?05:54
Keybukright now it's disabled05:55
Keybukhas a few bugs05:55
AStormOk, not a problem. For a while, I'll stick with plain echo.06:02
AStormThe hardest part is writing the network script06:03
AlexExtremewe talked about the possibility of integration with syslog-ng a while back06:03
AStormthe gentoo one is so universal, that it's quite slow :>06:03
AStorm(also, the network devices aren't parallelised)06:03
_ionastorm: It might be wise to start network interfaces based on events emitted by udev, too.06:04
AStormYep.06:04
AStormGentoo does that, but it has to wait for udev to settle :P06:04
AlexExtremefrugalware's networking script is quite simple, but it's not flexible in terms of bootup. everything is done by an external C program which uses profiles06:04
AStormWe don't have to.06:04
AStormAlexExtreme, blah06:04
AlexExtremewhy blah? :p06:05
AStormI'd rather use a bunch of shell scripts :>06:05
AStormand iproute206:05
AlexExtreme:)06:05
AStormand probably wireless-tools06:05
MdAStorm: only because currently daemons are started unconditionally when the interface is up. the correct way would be to start daemons when the interface is up, syslogd is running, /var is mounted, etc06:05
AStormMd, yes, unfortunately.06:06
AStormGentoo init can be fixed, yes.06:06
AStormBut is it worth it? It is somewhat cruddy (e.g. /sbin/rc)06:06
=== _ion still recommends just starting /sbin/rc as the compatibility layer, and rewriting things gradually as upstart jobs.
AStorm_ion, I'm doing it right now, thank you06:07
AlexExtremewell06:07
AStorm:>06:07
AlexExtremethat would be hard06:07
AlexExtremebecause06:07
_ionThe result is probably a lot better than converting the gentoo script to upstart jobs automatically.06:07
_ionscripts06:08
AlexExtremehmm wait06:08
Keybukthat's harder for Gentoo, because of their intricately interlinked deps06:08
AStormNo, it's the same as running the gentoo init.06:08
AlexExtremeno, forget i said anything06:08
AlexExtreme:)06:08
Keybukthey can't just remove one script06:08
AStormExactly. That's why they have to be wrapped.06:08
Keybukbecause then all of its dependers wouldn't work06:08
Keybukwhere as we can06:08
AStormI simply wrap them in a wrapper script06:11
AStormfor upstart.06:11
AStormAnd add a "runlevel" with a list of the deps.06:11
AStormStill haven't got to modifying depscan.sh or rc-update to modify the file06:12
AlexExtremehmm06:26
AlexExtremethat usplash in feisty atm is nice06:26
AStormHmm, what about checking a filesystem just before mounting? :>06:26
AStorm(except if a flag is given in the fstab, maybe...)06:26
AStormupstart could be turned into an automounter too...06:27
AStorm(maybe not for network filesystems, for these there's autofs)06:27
AStormExcept that it wouldn't know who inserted the disc. So here, Unix user rights would have to be used.06:29
AlexExtremehmm06:32
AlexExtremedoes anyone know if kdump is implemented on feisty yet?06:32
AStormHmm, does initctl emit block until the event has been totally handled?07:35
AStormand what about initctl start?07:36
AStormping, anyone?08:06
=== int0x0c [n=ben@128.164.137.210] has joined #upstart
int0x0cAStorm, You have upstart running on Gentoo, right?08:20
=== juergbi [n=juerg@80-219-17-102.dclient.hispeed.ch] has joined #upstart
AStormint0x0c, in emulation currently08:26
AStormwriting the basic init and a proper init script emulation layer will take time08:26
AStormI'm doing that currently08:27
int0x0cahhh08:27
AStorms/currently/right now/08:27
int0x0cheh08:27
int0x0cHave you seen Keybuk around recently?08:27
int0x0cI'm looking to port the init system fully to upstart08:27
AStorm[19:23:08]  * Keybuk has quit ("")08:27
int0x0cHe's supposed to release a full upstart jobset soon08:28
AStormI'm doing that too :-)08:28
int0x0cbah08:28
AStormI'd appreciate the init scripts, but then, I'm porting it right now too.08:28
int0x0cahhh, alright08:28
int0x0cI'm afraid I don't understand the init system well enough to port the base system scripts without some research08:29
int0x0cit would be great to get a full upstart init sequenceon gentoo08:30
=== int0x0c hates his dying spacebar
AStormIt's actually quite simple.08:31
AStormmount proc, dev, remount root ro08:31
AStormstart udev08:31
AStormfsck root08:31
AStormfsck other fses08:31
AStormmount them08:31
AStormthat's the end of basic setup.08:31
AStormThe last step is starting gettys08:31
AStormThat's the basic skeleton. You probably want to add there some daemons, network setup, sound setup, such things.08:32
AStorm(forgot about remounting root rw :> )08:33
AStormAlso mount /dev/pts and /dev/usb optionally08:33
AStormalso, mounting sys08:33
int0x0chmm08:35
int0x0cHave you implemented those as pure upstart jobs?08:35
AStormDoing it right now.08:35
AStormActually, mostly done.08:36
AStormStill working on improving the fsck08:36
AStormThen, the init level/profile has to be launched. E.g. a script starting everything in some directory08:36
AStormand stopping08:37
AStorma runlevel simulation, that is.08:37
AStorm(or eINIT's mode, rather)08:38
AStormAt least until profiles are implemented.08:40
=== Md [i=md@freenode/staff/md] has joined #upstart
AStormWell, the actual depscan.sh just launches a bunch of computation using awk08:58
AStormI'd rewrite it in Python myself.08:58
AStorm(it's on Gentoo anyway)08:58
AStormThe emulation requires complex-event patch08:59
AStorm(otherwise it's impossible to link deps together)09:00
AStormIt's in awk, because the need system is too hard to implement in bash :>09:01
int0x0cDo you suppose you could post your base startup job somewhere?09:33
_ionHaha, i just now saw the picture Keybuk has at his launchpad page. :-)09:51
AStormHey guys...11:34
AStormI wonder if this script is correct (with complex-events patch)11:35
AStormhttp://wklej.org/id/8aba67fafb11:36
AStorm(check-fs does what you expect :-) )11:36
AStormMaybe change the from line to11:37
AStormstart on started udev11:37
AStormstop on stopped check-fs FS=/11:37
AStormHmm, or do I need something to listen on initctl events?11:38
AStormAh, no, I have to add sleep inf probably11:39
AStormso that it's still running? (even with the fix for jobs w/o execs)11:40
AStormI wonder...11:49
AStormmy test-event1 doesn't register as a job11:50
AStormAh, my bad. Braino11:51
AStormOk, got it :-)11:53
AStormIs there a way to create a one-fire command that will block until the other event happens, or do I have to use that sleep inf hack?11:54
AStorm(which leaves nasty KILL messages around)11:58
=== mbiebl [n=michael@e180096150.adsl.alicedsl.de] has joined #upstart
AStormmbiebl, oh, maybe you know.11:58
mbieblAStorm: hi, what's up11:59
AStormI wish to run a single-fire command, which should block until an event is fired11:59
AStormsleep inf and using the dependencies leaves KILL messages.11:59
AStorm(looks yucky)12:00
mbieblAStorm: could you explain a bit more detailed what you want to achieve12:01
=== int0x0c [n=ben@128.164.137.210] has joined #upstart
AStormI want to launch another event (which is an instance, so can't just wait on something)12:02
AStormand then, block, until it finished12:02
mbiebl"launch an event" ?12:02
AStormActually, start a job12:03
AStormBut emitting an event would do the same12:03
AStormStart command x, which returns12:03
AStormand still wait until that one event12:03
mbieblAStorm: Sorry, I think you lost me. I'd have to see the bigger picture to understand what you want to do.12:06
AStormLaunch 3 fsck in parallel12:06
AStormand wait until they complete12:06
AStormeach fsck is a job.12:06
AStorm(because I would like to hook that up to udev events later)12:06
mbieblWhy do you have to wait, until all three of them have been completed?12:08
_ion"initctl emit foo" blocks automatically12:08
AStorm_ion, yep, but what will receive it? :>12:08
AStormmbiebl, because then the mounting may happen12:08
AStorm(automounting that is)12:08
_ion/etc/event.d/test:12:08
_ionstart on foo12:08
_ionexec sleep 512:08
AStormAnd I also want to use it in system startup sequence12:09
_ion% sudo initctl emit foo12:09
AStorm_ion, hmm, I have to pass parameters too12:09
mbieblWell, I'd say, mount each partition separately when fsck has completed.12:09
_ionYou probably should make the fsck job emit "filesystem-checked" and the mount job "start on filesystem-checked" or something like that.12:10
mbieblI see no reason to way for / not being mounted because /usr is still checked.12:10
mbiebls/way/wait/12:10
AStormmbiebl, that's not the problem12:11
AStormthe problem is /usr/share mounted while /usr isn't12:11
AStorm:-)12:11
mbieblWell, then the /usr/share mount job should "start on fsck-checked /usr"12:12
AStormyeah right :>12:12
AStormAnd I do know that from udev events :P12:12
_ionI'm not sure there should be separate mount jobs for separate partitions.12:13
AStorm_ion, there can, not a problem at all12:13
AStormIf I serialise mounting after the fsck12:13
AStorm_all_ of them12:13
mbieblThis is actually quite tricky.12:14
mbieblYou can't know in advance the partitioning scheme of a user.12:14
AStormI can emit some events, right.12:14
AStormyes, but can make educated guesses :P12:14
mbieblSo providing upstart mount jobs for each separate partition won't be possible.12:14
mbieblYou could, as _ion suggest, do the mounting in on single job.12:15
_ionBetter make the mount intelligent: if MOUNTPOINT is /usr/share and there's a /usr entry in /etc/fstab, block until /usr is mounted.12:15
_ionOr something like that.12:15
AStormExactly.12:15
AStormBut not on the fstab check12:15
AStormon mtab12:15
AStormor rather, /proc/mounts12:15
_ionNo, that doesn't contain /usr until /usr is mounted, right?12:16
AStormfstab will be checked anyway, the mounts will be serialised separately by an external program12:16
AStormI've temporarily solved the problem already, thank you.12:16
AStorm(I meant they will wait on each other, the scripts launched with an argument)12:17
AStormHmm, I could wait on the pids12:19
_ion% deps() { while read fstab_fs fstab_mountpoint rest; do case "$MOUNTPOINT" in "$fstab_mountpoint"*) echo "$fstab_mountpoint"; esac; done </etc/fstab }; MOUNTPOINT=/usr/share deps12:19
_ionIf there's /usr in /etc/fstab, that should print it.12:19
AStormMore or less.12:20
_ionThat's not a real implementation, it would print "/usr/loc" for /usr/local, but it demonstrates the idea.12:20
AStormI know what I have to do...12:20
AStormbut the parsing will be done by an external program anyway.12:21
=== j_ack [n=rudi@p508DA3BD.dip0.t-ipconnect.de] has joined #upstart
AStormI just wonder, how to emit x events and wait on them all12:21
AStormWell, wrong actually12:22
_ionfor e in foo bar baz; do initctl emit "$e" & done; wait12:22
mbieblAStorm: The basic question is, when can certain jobs start to run12:22
AStormI can use complex-events and stop on (fsck / and fsck /usr and fsck /var and ... )12:22
AStormBut that will leave evil messages12:22
AStormI will launch them using events, thank you.12:23
AStormBut what will wait w/o args do?12:23
AStormmbiebl, that will be assured by another program and the deps :-)12:23
_ionwait for all children. To wait for only those initctls:12:23
AStormGreat then. Should've read the manpage better.12:24
_ionpids=; for e in foo bar baz; do initctl emit "$e" & pids="$pids $!"; done; wait $pids12:24
_ion(i didn't test that, though)12:24
AStormNot a problem with "all children"12:24
AStormThe shell is running only these commands.12:25
AStormOk, so now the fsck problem is solved (thanks to emitting events)12:27
AStormper-disk fsck is done too properly12:28

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!