Re: [gentoo-user] crontab not executing
>> I've switched to this but I can't find the date binary. Does anyone >> know the full path for date? > > $ which date > /bin/date > > $ qfile date > sys-apps/coreutils (/bin/date) Thank you everyone. I think it's working now. - Grant
Re: [gentoo-user] crontab not executing
On Monday 20 June 2011 15:47:50 Grant wrote: > I've switched to this but I can't find the date binary. Does anyone > know the full path for date? $ which date /bin/date $ qfile date sys-apps/coreutils (/bin/date) -- Rgds Peter
Re: [gentoo-user] crontab not executing
>> One of my systems has a crontab like this to clean up and >> consolidate the output of the video monitoring app "motion": >> >> # crontab -l >> # DO NOT EDIT THIS FILE - edit the master and reinstall. >> # (/home/grant/cron.root.txt installed on Sat Sep 25 10:42:18 2010) >> # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 >> vixie Exp $) 50 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' >> +%Y%m%d)*.jpg 55 23 * * * /bin/rm /home/motion/$(date -d >> 'yesterday' +%Y%m%d)*.avi 59 23 * * * /usr/bin/mencoder >> /home/motion/$(date +%Y%m%d)*.avi -noidx -o >> /home/motion/full-$(date +%Y%m%d).avi -ovc copy -oac copy >> >> If I execute each command manually, it works great, but nothing >> happens otherwise. Can someone tell me why this crontab doesn't >> seem to be executing? > > crontab does not use the same shell you use, so when your crons run > they are missing all of the niceties you are used to using yourself. > > Things like PATH for example, and the $() may or may not work. > > You have paths for rm and mencoder but not for date I've switched to this but I can't find the date binary. Does anyone know the full path for date? 50 23 * * * /bin/rm /home/motion/`date -d 'yesterday' +\%Y\%m\%d`*.jpg 55 23 * * * /bin/rm /home/motion/`date -d 'yesterday' +\%Y\%m\%d`*.avi 59 23 * * * /usr/bin/mencoder /home/motion/`date +\%Y\%m\%d`*.avi -noidx -o /home/motion/full-`date +\%Y\%m\%d`.avi -ovc copy -oac copy - Grant
Re: [gentoo-user] crontab not executing
On Mon, Jun 20, 2011 at 08:39:00PM +1000, Adam Carter wrote: > >> /bin/sh is a symlink to bash. > > > > Which runs as sh when run from the symlink. > > I dont understand. "runs as" usually means "runs under the user > context" to me - are you saying bash has an sh compatibility mode? Yes, from the bash man page: If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well. When invoked as an interac‐ tive login shell, or a non-interactive shell with the --login option, it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order. The --noprofile option may be used to inhibit this behavior. When invoked as an interactive shell with the name sh, bash looks for the variable ENV, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as sh does not attempt to read and exe‐ cute commands from any other startup files, the --rcfile option has no effect. A non-interactive shell invoked with the name sh does not attempt to read any other startup files. When invoked as sh, bash enters posix mode after the startup files are read. W -- Willie W. Wong ww...@math.princeton.edu Data aequatione quotcunque fluentes quantitae involvente fluxiones invenire et vice versa ~~~ I. Newton
Re: [gentoo-user] crontab not executing
* Grant [110619 18:09]: > One of my systems has a crontab like this to clean up and consolidate > the output of the video monitoring app "motion": > > # crontab -l > # DO NOT EDIT THIS FILE - edit the master and reinstall. > # (/home/grant/cron.root.txt installed on Sat Sep 25 10:42:18 2010) > # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) > 50 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' +%Y%m%d)*.jpg > 55 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' +%Y%m%d)*.avi > 59 23 * * * /usr/bin/mencoder /home/motion/$(date +%Y%m%d)*.avi -noidx > -o /home/motion/full-$(date +%Y%m%d).avi -ovc copy -oac copy > > If I execute each command manually, it works great, but nothing > happens otherwise. Can someone tell me why this crontab doesn't seem > to be executing? > > - Grant How did you edit and which file did you edit? Did you use crontab -e? Todd
Re: [gentoo-user] crontab not executing
Am 20.06.2011 12:39, schrieb Adam Carter: >>> /bin/sh is a symlink to bash. >> >> Which runs as sh when run from the symlink. > > I dont understand. "runs as" usually means "runs under the user > context" to me - are you saying bash has an sh compatibility mode? > Yes, that's exactly what he wants to say. Interestingly, that mode still supports most bash-only features like arrays. I guess they can do this because it doesn't change the semantic of old Bourne shell code. It just makes some formerly invalid syntax valid. /bin/sh -c -c 'array=( sh bash ); echo I am a ${array[1]}' 2>/dev/null || echo I am a sh > I am a bash Other drop-in replacements for /bin/sh like dash are less forgiving: /bin/dash -c -c 'array=( sh bash ); echo I am a ${array[1]}' 2>/dev/null || echo I am a sh > I am a sh signature.asc Description: OpenPGP digital signature
Re: [gentoo-user] crontab not executing
On Monday, June 20 at 20:39 (+1000), Adam Carter said: > I dont understand. "runs as" usually means "runs under the user > context" to me - are you saying bash has an sh compatibility mode? Yes, when run as sh in POSIX mode (i.e. if it were called as "bash --posix").
Re: [gentoo-user] crontab not executing
On Mon, 20 Jun 2011 20:39:00 +1000, Adam Carter wrote: > >> /bin/sh is a symlink to bash. > > > > Which runs as sh when run from the symlink. > > I dont understand. "runs as" usually means "runs under the user That's one possible use of the term, but English rarely has one meaning per phrase. > context" to me - are you saying bash has an sh compatibility mode? Yes. "If bash is invoked with the name sh, it tries to mimic the startup behavior of historical versions of sh as closely as possible, while conforming to the POSIX standard as well." -- Neil Bothwick If a turtle doesn't have a shell, is he homeless or naked? signature.asc Description: PGP signature
Re: [gentoo-user] crontab not executing
>> /bin/sh is a symlink to bash. > > Which runs as sh when run from the symlink. I dont understand. "runs as" usually means "runs under the user context" to me - are you saying bash has an sh compatibility mode?
Re: [gentoo-user] crontab not executing
Am 20.06.2011 10:21, schrieb Neil Bothwick: > On Mon, 20 Jun 2011 16:30:12 +1000, Adam Carter wrote: > >>> I might be wrong but as I understand it, cron executes your commands >>> in /bin/sh, not /bin/bash. >> >> /bin/sh is a symlink to bash. > > Which runs as sh when run from the symlink. > > Interestingly, the new style of command substitution has been added to the POSIX standard. http://pubs.opengroup.org/onlinepubs/009695399/ I always thought bash was just lazy when it accepted that syntax in sh mode and therefore could fail if you use dash as a sh replacement or something alike. Well, lifelong learning ... Regards, Florian Philipp signature.asc Description: OpenPGP digital signature
Re: [gentoo-user] crontab not executing
On Mon, 20 Jun 2011 16:30:12 +1000, Adam Carter wrote: > > I might be wrong but as I understand it, cron executes your commands > > in /bin/sh, not /bin/bash. > > /bin/sh is a symlink to bash. Which runs as sh when run from the symlink. -- Neil Bothwick She's fine, upstanding, and wonderful laying down. signature.asc Description: PGP signature
Re: [gentoo-user] crontab not executing
> I might be wrong but as I understand it, cron executes your commands in > /bin/sh, not /bin/bash. /bin/sh is a symlink to bash.
Re: [gentoo-user] crontab not executing
Am 20.06.2011 00:37, schrieb Grant: > One of my systems has a crontab like this to clean up and consolidate > the output of the video monitoring app "motion": > > # crontab -l > # DO NOT EDIT THIS FILE - edit the master and reinstall. > # (/home/grant/cron.root.txt installed on Sat Sep 25 10:42:18 2010) > # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) > 50 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' +%Y%m%d)*.jpg > 55 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' +%Y%m%d)*.avi > 59 23 * * * /usr/bin/mencoder /home/motion/$(date +%Y%m%d)*.avi -noidx > -o /home/motion/full-$(date +%Y%m%d).avi -ovc copy -oac copy > > If I execute each command manually, it works great, but nothing > happens otherwise. Can someone tell me why this crontab doesn't seem > to be executing? > > - Grant > I might be wrong but as I understand it, cron executes your commands in /bin/sh, not /bin/bash. Therefore you should use the `date -d 'yesterday' +%Y%m%d` syntax instead of $(date -d 'yesterday' +%Y%m%d). Additionally, % signs are replaced with newlines. You have to escape them: `date -d 'yesterday' +\%Y\%m\%d` Hope this helps, Florian Philipp signature.asc Description: OpenPGP digital signature
Re: [gentoo-user] crontab not executing
On Sun, 19 Jun 2011 15:37:42 -0700, Grant wrote about [gentoo-user] crontab not executing: > One of my systems has a crontab like this to clean up and consolidate > the output of the video monitoring app "motion": > > # crontab -l > # DO NOT EDIT THIS FILE - edit the master and reinstall. > # (/home/grant/cron.root.txt installed on Sat Sep 25 10:42:18 2010) > # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 > vixie Exp $) 50 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' > +%Y%m%d)*.jpg 55 23 * * * /bin/rm /home/motion/$(date -d 'yesterday' > +%Y%m%d)*.avi 59 23 * * * /usr/bin/mencoder /home/motion/$(date > +%Y%m%d)*.avi -noidx -o /home/motion/full-$(date +%Y%m%d).avi -ovc > copy -oac copy > > If I execute each command manually, it works great, but nothing > happens otherwise. Can someone tell me why this crontab doesn't seem > to be executing? For starters, you don't have any environment variables assigned at the top of your crontab. Here is mine: # Establish environment variables. JAVA_HOME='/etc/java-config-2/current-system-vm' PATH='/home/dwn/bin:/usr/local/bin:/bin:/usr/bin:/etc/java-config-2/current-system-vm/bin:/etc/java-config-2/current-system-vm/jre/bin:/opt/bin' TMPDIR='/tmp' HOME='/home/dwn' SHELL='/bin/zsh' LOGNAME='dwn' LC_ALL='en_GB.UTF-8' http_proxy='http://localhost:8080' ftp_proxy='http://localhost:8080' RSYNC_PROXY='localhost:8080' ZFTP_PREFS='P' PGHOST='' PGPORT='' # Set our priority level. !nice(4) # Clean up old backup files. %daily 38 20 find "$HOME/" \( -name \*~ -o -iname \*.bak -o -iname \*.bak\? \) -print -delete # Clean out the work directory for Lazarus. %daily 18 05 find "$HOME/Lazarus_projects/tmp/" -mindepth 1 -delete # Download the development trunk of Free Pascal compiler. %daily 13 07 fpc_download.zsh # Purge old mailing list messages from Free Pascal. %daily 37 04 mail_purge.py '6d5c5c5a8aa90d8a' # Clear the cache for epiphany. %daily 27 06 cd "$HOME/.gnome2/epiphany/mozilla/epiphany" && rm -rf compreg.dat pluginreg.dat Cache .parentlock # Clean out old GNOME sessions. #%hourly 13 find "$HOME/.config/gnome-session/saved-session/" -mindepth 1 -name \*.desktop -delete # Clean out the cache subdirectories under $HOME. %daily 28 06 cache_clean.zsh # Check Portage for orphans. #%daily 32 06 portage_orphans.zsh -- Regards, Dave [RLU #314465] *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* dwn...@ntlworld.com (David W Noon) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* signature.asc Description: PGP signature