On 30.06.2012 23:32, Aaron Konstam wrote:
On Sat, 2012-06-30 at 08:36 -0700, Geoffrey Leach wrote:
> On 06/30/2012 03:51:45 AM, Mateusz Marzantowicz wrote:
>> On 29.06.2012 22:37, Geoffrey Leach wrote:
>>> This problem has been submitted to Bugzilla (836657), but I thought
>>> ask here to see if there are any fixes lurking.
>>> System is running 3.4.3-1.fc17.x86_64. When I systemctl poweroff
>>> kernel reboots instead of powering off. Under Windows 7, power off
>>> works as expected. All packages are up-to-date.
>>> Any ideas?
>> What about shutdown -h ? Does it work as expected? Then try halt and
>> poweroff commands.
> It's my understanding that poweroff is a backwards-compatibility
> implementation of systemctl poweroff, which I have tried to no avail. I
> should have mentioned that. It appears that halt is the same. shutdown
> if a link to systemctl. Bottom line is that I would not expect any of
> these to be any different, but I live in hope and will report back if
> there's any difference.
> I should also mention that systemctl poweroff works fine on my laptop
> running the 32-bit version of Fedora 16.
> One point, FWIW. Power off is essential for my application. Merely
> halt-ing is no better than just leaving the system running.
> Thanks. I don't wish to seem ungrateful -:)
I disagree with the other posters. There is a magic related to shutdown
poweroff and halt. If you look at the man pages you will find that
shutdown and poweroff have different options. It is clear that when
systemctl is called under a different name it checks the name and
potentially reacts differently. For example poweroff by itself will
shutdown the machine . systemctl called by itself will not.
If you check source code with is more reliable then any man page could
ever be, you will find that there really is nothing magical. Please see
file src/systemctl/systemctl.c in systemd source tree. Commands like
halt, shutdown and power off call the reboot() function. I can agree
that argument to reboot() may change between this calls but it's still
the same function they're calling.