From: bugzilla-daemon@kernel.org
To: linux-man@vger.kernel.org
Subject: [Bug 218266] Need article about Linux shutdown process
Date: Mon, 25 Dec 2023 10:19:28 +0000 [thread overview]
Message-ID: <bug-218266-11311-BPIAt6Olg4@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-218266-11311@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=218266
--- Comment #6 from Rajesh (r.pandian@gmail.com) ---
H(In reply to Alexander from comment #5)
> Thanks for the code, I tested it. On my machine it does not respond to
> system reboots. That is, the SIGTERM signal does not reach the program. In
> the log there is only "ok..". If I send a signal explicitly (killall -sTERM
> a.out) “Received signal is: 15” appears in the log. I tested it on different
> kernels: both distribution and self-assembled ones. Both with user rights
> for the program and with superuser rights by setting set uid root. Maybe
> it's a distribution feature (I'm using Debian sid) that the signal reaches
> systemd, but not other programs?
Hi Alexander,
Merry xmas and I come bearing gifts!
So signal is not a posix standard and hence it's not working across different
flavours.
Sigaction is the posix standard. There is a lot to sigaction and hence I won't
be going down that road. Instead let me give a a dummy code which works and
also a hint.
Your process below needs to rely on systemd. If I run as a standalone process
it sometimes misses the signal. So the realiable way is to configure the below
as a systemd. I have given below the systemd config too for my below code that
runs as service "dummy.service". Refer to systemd docs on how to configure.
Note: Tested the below in Ubuntu 22.04.4, deian trixie sid (test)
/* Code for handling sigaction
* Create those directories that we are removing e.g rmdir("session");
*/
#include <signal.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
volatile sig_atomic_t FLAG;
volatile sig_atomic_t fd;
void signalHandler(int signal) {
FLAG=0;
write(fd,"Shutdown\n",9);
rmdir("delete-this");
rmdir("session");
fsync(fd);
_exit(0);
}
int main() {
FLAG = 1;
struct sigaction act;
act.sa_handler = &signalHandler;
sigaction(SIGTERM,&act,NULL); //calling sigaction to follow posix std
fd = fopen("/home/duke/output.log",O_WRONLY|O_CREAT|O_TRUNC,0644);
while (FLAG) {
write(fd,"Write\n",6);
sleep(1);
}
}
/* Systemd config
Note that you this is just a sample and should never be used as is in a
prodcution as I didn't give much thought about running this in production as
this is a demo */
[Unit]
Description="test"
[Service]
Type=simple
User=root
WorkingDirectory=/home/duke
ExecStart=/home/rajesh/rebooter
Restart= always
RestartSec=3
[Install]
WantedBy=reboot.target
Now you run systemctl start dummy.service and reboot and your directories
should go away and an entry in the output.log
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
prev parent reply other threads:[~2023-12-25 10:19 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-15 6:29 [Bug 218266] New: Need article about Linux shutdown process bugzilla-daemon
2023-12-15 10:27 ` [Bug 218266] " bugzilla-daemon
2023-12-15 11:24 ` bugzilla-daemon
2023-12-15 11:34 ` bugzilla-daemon
2023-12-22 14:09 ` bugzilla-daemon
2023-12-22 19:14 ` bugzilla-daemon
2023-12-25 10:19 ` bugzilla-daemon [this message]
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=bug-218266-11311-BPIAt6Olg4@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@kernel.org \
--cc=linux-man@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.