Bash script able to run manually, but with cron not working. + Ubuntu 16.04
Clash Royale CLAN TAG#URR8PPP
Env:- Ubuntu 18.04
I write one C program and trying to speak to port and fetch some data and dump into one file. Then I created one bash script and added this C program and expect to run at multiple intervals.
I'm able to run this bash script without any issues. I'm running as root.
<<snip>>
#!/bin/bash
interval=$1
time=$2
./CC-test $interval $time
<<snip>>
May I know is there any permission delegation issue for invoking some commands via cron? or do we need to tell cron to excecute with administrative privilege? Anyway I'm running cron as root, then I don't think so, if anything other required.
As a test, I just tried two commands in a shell script as follows
#!/bin/bash
date >> test
fdisk -l >> test
Even here also I can able to run manually and even both output is printing without any issues. For here I put it is in cron, on the "date" command output which is printed in test file.
Please shed me some views on this.
linux ubuntu cron
add a comment |
Env:- Ubuntu 18.04
I write one C program and trying to speak to port and fetch some data and dump into one file. Then I created one bash script and added this C program and expect to run at multiple intervals.
I'm able to run this bash script without any issues. I'm running as root.
<<snip>>
#!/bin/bash
interval=$1
time=$2
./CC-test $interval $time
<<snip>>
May I know is there any permission delegation issue for invoking some commands via cron? or do we need to tell cron to excecute with administrative privilege? Anyway I'm running cron as root, then I don't think so, if anything other required.
As a test, I just tried two commands in a shell script as follows
#!/bin/bash
date >> test
fdisk -l >> test
Even here also I can able to run manually and even both output is printing without any issues. For here I put it is in cron, on the "date" command output which is printed in test file.
Please shed me some views on this.
linux ubuntu cron
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
What happens if you doenv -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.
– Stephen Harris
Dec 20 '18 at 15:05
add a comment |
Env:- Ubuntu 18.04
I write one C program and trying to speak to port and fetch some data and dump into one file. Then I created one bash script and added this C program and expect to run at multiple intervals.
I'm able to run this bash script without any issues. I'm running as root.
<<snip>>
#!/bin/bash
interval=$1
time=$2
./CC-test $interval $time
<<snip>>
May I know is there any permission delegation issue for invoking some commands via cron? or do we need to tell cron to excecute with administrative privilege? Anyway I'm running cron as root, then I don't think so, if anything other required.
As a test, I just tried two commands in a shell script as follows
#!/bin/bash
date >> test
fdisk -l >> test
Even here also I can able to run manually and even both output is printing without any issues. For here I put it is in cron, on the "date" command output which is printed in test file.
Please shed me some views on this.
linux ubuntu cron
Env:- Ubuntu 18.04
I write one C program and trying to speak to port and fetch some data and dump into one file. Then I created one bash script and added this C program and expect to run at multiple intervals.
I'm able to run this bash script without any issues. I'm running as root.
<<snip>>
#!/bin/bash
interval=$1
time=$2
./CC-test $interval $time
<<snip>>
May I know is there any permission delegation issue for invoking some commands via cron? or do we need to tell cron to excecute with administrative privilege? Anyway I'm running cron as root, then I don't think so, if anything other required.
As a test, I just tried two commands in a shell script as follows
#!/bin/bash
date >> test
fdisk -l >> test
Even here also I can able to run manually and even both output is printing without any issues. For here I put it is in cron, on the "date" command output which is printed in test file.
Please shed me some views on this.
linux ubuntu cron
linux ubuntu cron
asked Dec 20 '18 at 11:10
user183980
31
31
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
What happens if you doenv -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.
– Stephen Harris
Dec 20 '18 at 15:05
add a comment |
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
What happens if you doenv -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.
– Stephen Harris
Dec 20 '18 at 15:05
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
What happens if you do
env -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.– Stephen Harris
Dec 20 '18 at 15:05
What happens if you do
env -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.– Stephen Harris
Dec 20 '18 at 15:05
add a comment |
1 Answer
1
active
oldest
votes
The cron daemon is always running as root. The cron jobs will be run as the user whose cronjob they belong to. If you add the cron job with crontab -e
as user john
, then the job will be running as user john
, not as root.
To edit root's cron jobs, use sudo crontab -e
.
The difference between running a command from the interactive command line and from a cron job is that the environment (environment variables, current working directory etc.) may well be different. Ideally, a cron job should explicitly set the needed variables to the correct values. For example, a script executed from cron may want to add a few paths the PATH
variable if 3rd-party utilities are used from non-standard paths, and it may want to cd
into the correct directory to set the working directory for the rest of the script (so that you, in your example, are in the correct directory when you run ./CC-test
, for example).
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there withfdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.
– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
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',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f490106%2fbash-script-able-to-run-manually-but-with-cron-not-working-ubuntu-16-04%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The cron daemon is always running as root. The cron jobs will be run as the user whose cronjob they belong to. If you add the cron job with crontab -e
as user john
, then the job will be running as user john
, not as root.
To edit root's cron jobs, use sudo crontab -e
.
The difference between running a command from the interactive command line and from a cron job is that the environment (environment variables, current working directory etc.) may well be different. Ideally, a cron job should explicitly set the needed variables to the correct values. For example, a script executed from cron may want to add a few paths the PATH
variable if 3rd-party utilities are used from non-standard paths, and it may want to cd
into the correct directory to set the working directory for the rest of the script (so that you, in your example, are in the correct directory when you run ./CC-test
, for example).
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there withfdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.
– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
add a comment |
The cron daemon is always running as root. The cron jobs will be run as the user whose cronjob they belong to. If you add the cron job with crontab -e
as user john
, then the job will be running as user john
, not as root.
To edit root's cron jobs, use sudo crontab -e
.
The difference between running a command from the interactive command line and from a cron job is that the environment (environment variables, current working directory etc.) may well be different. Ideally, a cron job should explicitly set the needed variables to the correct values. For example, a script executed from cron may want to add a few paths the PATH
variable if 3rd-party utilities are used from non-standard paths, and it may want to cd
into the correct directory to set the working directory for the rest of the script (so that you, in your example, are in the correct directory when you run ./CC-test
, for example).
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there withfdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.
– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
add a comment |
The cron daemon is always running as root. The cron jobs will be run as the user whose cronjob they belong to. If you add the cron job with crontab -e
as user john
, then the job will be running as user john
, not as root.
To edit root's cron jobs, use sudo crontab -e
.
The difference between running a command from the interactive command line and from a cron job is that the environment (environment variables, current working directory etc.) may well be different. Ideally, a cron job should explicitly set the needed variables to the correct values. For example, a script executed from cron may want to add a few paths the PATH
variable if 3rd-party utilities are used from non-standard paths, and it may want to cd
into the correct directory to set the working directory for the rest of the script (so that you, in your example, are in the correct directory when you run ./CC-test
, for example).
The cron daemon is always running as root. The cron jobs will be run as the user whose cronjob they belong to. If you add the cron job with crontab -e
as user john
, then the job will be running as user john
, not as root.
To edit root's cron jobs, use sudo crontab -e
.
The difference between running a command from the interactive command line and from a cron job is that the environment (environment variables, current working directory etc.) may well be different. Ideally, a cron job should explicitly set the needed variables to the correct values. For example, a script executed from cron may want to add a few paths the PATH
variable if 3rd-party utilities are used from non-standard paths, and it may want to cd
into the correct directory to set the working directory for the rest of the script (so that you, in your example, are in the correct directory when you run ./CC-test
, for example).
edited Dec 20 '18 at 11:29
answered Dec 20 '18 at 11:22
Kusalananda
121k16229372
121k16229372
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there withfdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.
– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
add a comment |
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there withfdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.
– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there with
fdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.– Kusalananda
Dec 20 '18 at 11:51
@user183980 If the cron job produces errors, you would get them emailed to you (root). You could also try to redirect the error stream to the file to see them there with
fdisk -l >>test 2>&1
. It was not clear from the question what worked and what did not work.– Kusalananda
Dec 20 '18 at 11:51
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
I suspect the path could be the problem, let me retest again. thanks for your suggestion
– user183980
Dec 20 '18 at 11:53
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f490106%2fbash-script-able-to-run-manually-but-with-cron-not-working-ubuntu-16-04%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Are you running date in the cron job itself? Maybe show that cron entry as well...
– Jeff Schaller
Dec 20 '18 at 11:11
What happens if you do
env -i ./testscript
- this can frequently show hidden problems that don't show when run from the command line but may show when run from cron.– Stephen Harris
Dec 20 '18 at 15:05