systemd is hanging when I start or restart a service

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP








up vote
1
down vote

favorite












I'm new to systemd after upgrading to 16.04 and I'm encountering a problem with starting and restarting services. When I run (for example)...



systemctl start djalbat.com


...it seems to work, however I don't get the prompt back, it just appears to hang. If I ctrl-c to get the prompt back and then test whether the service has started, it appears to have done so. I wonder what there is in the configuration that would cause this to happen? Here it is:



[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target


Also, if someone could point out the need for the last WantedBy directive, that would be appreciated.










share|improve this question





















  • It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
    – Thomas
    Feb 10 at 13:45










  • Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
    – James Smith
    Feb 10 at 14:17










  • That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
    – James Smith
    Feb 10 at 14:20














up vote
1
down vote

favorite












I'm new to systemd after upgrading to 16.04 and I'm encountering a problem with starting and restarting services. When I run (for example)...



systemctl start djalbat.com


...it seems to work, however I don't get the prompt back, it just appears to hang. If I ctrl-c to get the prompt back and then test whether the service has started, it appears to have done so. I wonder what there is in the configuration that would cause this to happen? Here it is:



[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target


Also, if someone could point out the need for the last WantedBy directive, that would be appreciated.










share|improve this question





















  • It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
    – Thomas
    Feb 10 at 13:45










  • Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
    – James Smith
    Feb 10 at 14:17










  • That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
    – James Smith
    Feb 10 at 14:20












up vote
1
down vote

favorite









up vote
1
down vote

favorite











I'm new to systemd after upgrading to 16.04 and I'm encountering a problem with starting and restarting services. When I run (for example)...



systemctl start djalbat.com


...it seems to work, however I don't get the prompt back, it just appears to hang. If I ctrl-c to get the prompt back and then test whether the service has started, it appears to have done so. I wonder what there is in the configuration that would cause this to happen? Here it is:



[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target


Also, if someone could point out the need for the last WantedBy directive, that would be appreciated.










share|improve this question













I'm new to systemd after upgrading to 16.04 and I'm encountering a problem with starting and restarting services. When I run (for example)...



systemctl start djalbat.com


...it seems to work, however I don't get the prompt back, it just appears to hang. If I ctrl-c to get the prompt back and then test whether the service has started, it appears to have done so. I wonder what there is in the configuration that would cause this to happen? Here it is:



[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target


Also, if someone could point out the need for the last WantedBy directive, that would be appreciated.







systemd






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Feb 10 at 13:40









James Smith

16118




16118











  • It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
    – Thomas
    Feb 10 at 13:45










  • Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
    – James Smith
    Feb 10 at 14:17










  • That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
    – James Smith
    Feb 10 at 14:20
















  • It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
    – Thomas
    Feb 10 at 13:45










  • Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
    – James Smith
    Feb 10 at 14:17










  • That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
    – James Smith
    Feb 10 at 14:20















It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
– Thomas
Feb 10 at 13:45




It might be because the service is configured to fork but actually it does not fork. What happens when you execute the command from ExecStart in a terminal? Does it put itself into the background? If not, use Type=simple.
– Thomas
Feb 10 at 13:45












Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
– James Smith
Feb 10 at 14:17




Let me try that. I put in that directive, much like the WantedBy directive, simply because I'd seen it so many times in sample configurations.
– James Smith
Feb 10 at 14:17












That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
– James Smith
Feb 10 at 14:20




That worked, many thanks! If you have a moment, please make your comment into an answer. Then I can accept it, which might help others coming here. Thanks again!
– James Smith
Feb 10 at 14:20










1 Answer
1






active

oldest

votes

















up vote
3
down vote



accepted










So it turned out that the command that is executed with the ExecStart configuration did not fork whereas the systemd service was configured for a forking executable. This lead systemctl to wait for the for of the executable leading to a not returning command line.



The correct configuration for an executable that does not fork is to use Type=simple.



[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target


The WantedBy is needed to connect this unit with a target, so this unit or service is started automatically when the appropriate target is reached and the service is enabled to start automatically with



systemctl enable djalbat


Don't forget to refresh systemd after you have made changes to your service files with



systemctl daemon-reload





share|improve this answer




















  • The perfect answer, thank you.
    – James Smith
    Feb 10 at 17:15










Your Answer







StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1004853%2fsystemd-is-hanging-when-i-start-or-restart-a-service%23new-answer', 'question_page');

);

Post as a guest






























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
3
down vote



accepted










So it turned out that the command that is executed with the ExecStart configuration did not fork whereas the systemd service was configured for a forking executable. This lead systemctl to wait for the for of the executable leading to a not returning command line.



The correct configuration for an executable that does not fork is to use Type=simple.



[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target


The WantedBy is needed to connect this unit with a target, so this unit or service is started automatically when the appropriate target is reached and the service is enabled to start automatically with



systemctl enable djalbat


Don't forget to refresh systemd after you have made changes to your service files with



systemctl daemon-reload





share|improve this answer




















  • The perfect answer, thank you.
    – James Smith
    Feb 10 at 17:15














up vote
3
down vote



accepted










So it turned out that the command that is executed with the ExecStart configuration did not fork whereas the systemd service was configured for a forking executable. This lead systemctl to wait for the for of the executable leading to a not returning command line.



The correct configuration for an executable that does not fork is to use Type=simple.



[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target


The WantedBy is needed to connect this unit with a target, so this unit or service is started automatically when the appropriate target is reached and the service is enabled to start automatically with



systemctl enable djalbat


Don't forget to refresh systemd after you have made changes to your service files with



systemctl daemon-reload





share|improve this answer




















  • The perfect answer, thank you.
    – James Smith
    Feb 10 at 17:15












up vote
3
down vote



accepted







up vote
3
down vote



accepted






So it turned out that the command that is executed with the ExecStart configuration did not fork whereas the systemd service was configured for a forking executable. This lead systemctl to wait for the for of the executable leading to a not returning command line.



The correct configuration for an executable that does not fork is to use Type=simple.



[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target


The WantedBy is needed to connect this unit with a target, so this unit or service is started automatically when the appropriate target is reached and the service is enabled to start automatically with



systemctl enable djalbat


Don't forget to refresh systemd after you have made changes to your service files with



systemctl daemon-reload





share|improve this answer












So it turned out that the command that is executed with the ExecStart configuration did not fork whereas the systemd service was configured for a forking executable. This lead systemctl to wait for the for of the executable leading to a not returning command line.



The correct configuration for an executable that does not fork is to use Type=simple.



[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target


The WantedBy is needed to connect this unit with a target, so this unit or service is started automatically when the appropriate target is reached and the service is enabled to start automatically with



systemctl enable djalbat


Don't forget to refresh systemd after you have made changes to your service files with



systemctl daemon-reload






share|improve this answer












share|improve this answer



share|improve this answer










answered Feb 10 at 15:51









Thomas

3,29481325




3,29481325











  • The perfect answer, thank you.
    – James Smith
    Feb 10 at 17:15
















  • The perfect answer, thank you.
    – James Smith
    Feb 10 at 17:15















The perfect answer, thank you.
– James Smith
Feb 10 at 17:15




The perfect answer, thank you.
– James Smith
Feb 10 at 17:15

















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1004853%2fsystemd-is-hanging-when-i-start-or-restart-a-service%23new-answer', 'question_page');

);

Post as a guest













































































Popular posts from this blog

pylint3 and pip3 broken

Missing snmpget and snmpwalk

How to enroll fingerprints to Ubuntu 17.10 with VFS491