The officially official Devuan Forum!

You are not logged in.

#1 2024-10-17 12:21:56

bai4Iej2need
Member
From: Ortenau
Registered: 2021-04-25
Posts: 117  

[SOLVED] /etc/cron.hourly/somejob starts a bash script as dash

I have tested now several versions
Version 1

head central_sync
#!/bin/bash
# synchronise Unlimited number of directories on different hosts
... 

central_sync is a hardlink to /usr/local/bin/central_sync.bash

version 2

cat central_sync2
#!/bin/sh
set
/bin/bash /usr/local/bin/central_sync.bash

exit 0

version 3

cat central_sync3
#!/bin/sh
set
/bin/bash -x /usr/local/bin/central_sync.bash

exit 0

version 4

cat central_sync4
#!/bin/sh
set
/bin/bash --posix /usr/local/bin/central_sync.bash

exit 0

They all produce in the protocol log:

...
set 
...
SHELL=/bin/sh

Consequently the program fails, which runs when called in the console/terminal
Parameter expansion fails in the rsync command

Last edited by bai4Iej2need (2024-10-28 10:44:29)


The devil, you know, is better than the angel, you don't know. by a British Citizen, I don't know too good.
One generation abandons the enterprises of another like stranded vessels. By Henry David Thoreau, WALDEN, Economy. Line 236 (Gutenberg text Version)
broken by design :
https://bugs.debian.org/cgi-bin/bugrepo … bug=958390

Online

#2 2024-10-19 09:28:12

OddS
Member
Registered: 2023-09-09
Posts: 12  

Re: [SOLVED] /etc/cron.hourly/somejob starts a bash script as dash

I'm confused... perhaps because I don't know what "the protocol log" is or may be because you do not say if the log is produced when /etc/cron.hourly/somejob runs or when you start  central_sync.bash  manually

If I remember this correctly, cron does not know the environment you use in the terminal.  That may explain the difference you observe, and possibly the parameter expansion problem.

Prove to yourself that /etc/cron.hourly/somejob is executable and that cron actually starts it.  Study the output from set.  Move on to locate what fails in /etc/cron.hourly/somejob

--
OddS

Last edited by OddS (2024-10-19 09:30:19)

Offline

#3 2024-10-28 10:43:40

bai4Iej2need
Member
From: Ortenau
Registered: 2021-04-25
Posts: 117  

Re: [SOLVED] /etc/cron.hourly/somejob starts a bash script as dash

Hi
I failed to explain that  I have a protocol function in the script which writes to /var/log/somejob/somejob.log, if executed as root.
I verified now that the script starts indeed as a dash script instead of starting as bash. Some command inside requires a bashism and then the script fails.
Works as root !
I correct now the headline as well.

Last edited by bai4Iej2need (2024-10-28 11:20:23)


The devil, you know, is better than the angel, you don't know. by a British Citizen, I don't know too good.
One generation abandons the enterprises of another like stranded vessels. By Henry David Thoreau, WALDEN, Economy. Line 236 (Gutenberg text Version)
broken by design :
https://bugs.debian.org/cgi-bin/bugrepo … bug=958390

Online

#4 2024-10-31 22:15:53

bai4Iej2need
Member
From: Ortenau
Registered: 2021-04-25
Posts: 117  

Re: [SOLVED] /etc/cron.hourly/somejob starts a bash script as dash

It is not possible to set the shell for a particular task in /etc/cron.hourly, etc/cron.daily, etc/cron.weekly and /etc/cron.monthly.
Setting shell for all jobs is in /etc/default/cron.
I moved the job into the crontab (crontab -e) of root.
Now  we go to the next problem.


The devil, you know, is better than the angel, you don't know. by a British Citizen, I don't know too good.
One generation abandons the enterprises of another like stranded vessels. By Henry David Thoreau, WALDEN, Economy. Line 236 (Gutenberg text Version)
broken by design :
https://bugs.debian.org/cgi-bin/bugrepo … bug=958390

Online

Board footer