Köra terminal-kommando i daily

Tråden skapades och har fått 9 svar. Det senaste inlägget skrevs .
1

När jag kör följande i terminalen så uppdateras statistiken för min webserver:
/ServerFiles/Apache2/webstats/cgi-bin/awstats_updateall.pl now -awstatsprog=/ServerFiles/Apache2/webstats/cgi-bin/awstats.pl

Jag vill att det ska köras varje natt och fick tips om /etc/daily som innehåller en massa saker som körs varj enatt kl 3

Först testade jag att lägga till följande sist i /etc/daily:
/ServerFiles/Apache2/webstats/cgi-bin/awstats_updateall.pl now -awstatsprog=/ServerFiles/Apache2/webstats/cgi-bin/awstats.pl

Det funkade inte, och då testade jag:
sh /ServerFiles/Apache2/webstats/cgi-bin/awstats_updateall.pl now -awstatsprog=/ServerFiles/Apache2/webstats/cgi-bin/awstats.pl

Det verkar inte funka heller. Hur ska man göra?

  • Medlem
  • Göteborg
  • 2007-04-25 21:37

Min /etc/daily är en länk till en katalog. Vad visar ls -la /etc/daily ?

Den visar:
/etc/daily -> periodic/daily/500.daily

När jag kör nano /etc/daily så öppnas en fil med massa grejer med lo-rullning och sånt. Och det verkar köras.

  • Medlem
  • Stockholm
  • 2007-04-26 21:05

Skulle föreslå att du kör det angivna kommandot i en crontab istället. Börja med att skapa ett bash-skript som innehåller följande rader.

#!/bin/bash
/ServerFiles/Apache2/webstats/cgi-bin/awstats_updateall.pl now -awstatsprog=/ServerFiles/Apache2/webstats/cgi-bin/awstats.pl

Spara skriptet med filändelsen '.sh' sen är det bara att fixa till rättigheterna på skriptet så du kan utföra det. Nästa steg är att lägga till skriptet i crontaben. Skriv in 'crontab -e' i Terminalen och pejsta in följande rader. Spara genom att trycka på ctrl+x.

SHELL=/bin/bash
# m h  dom mon dow command
*/10 * * * * /sokvag/till/skriptet.sh

Detta betyder att skriptet kommer utföras var 10:e minut. Googla lite så hittar du mer info om hur man bestämmer vilken tid skriptet ska köras.

Ursprungligen av .mp3:

Detta betyder att skriptet kommer utföras var 10:e minut. Googla lite så hittar du mer info om hur man bestämmer vilken tid skriptet ska köras.

Fråga 1: Varför finns "daily" om nu det ärr bättre med crontab?

Fråga 2: Om jag inte vill att det ska köras efter vissa intervall utan exakt samma tid varje dag, vad ska jag skriva då?

  • Medlem
  • Stockholm
  • 2007-04-29 11:58
Ursprungligen av stevenD:

Fråga 2: Om jag inte vill att det ska köras efter vissa intervall utan exakt samma tid varje dag, vad ska jag skriva då?

Det går att fixa, men jag har inte koll på hur. Men googla dig fram. Här är lite nyttig information.

http://www.ss64.com/osx/crontab.html

Jag instämmer med .mp3, det är smidigare med crontab än att pyssla med hourly och dialy-lösningarna, särskilt om du senare bestämmer dig för att du vill ändra intervallen på scriptet.

Om du vill lägga in egen "daily"-information kan du skapa en scriptfil som heter /etc/daily.local
Den körs som en av de sista kommandona i den normala daily.
Funkar utan problem.

Crontab kan givetvis användas, men i Mac OS X är det bättre att använda sig av en LaunchDaemon.
Använd Lingon för att enkelt skapa när du vill att en LaunchDemon skall köras. http://lingon.sourceforge.net/

  • Medlem
  • Stockholm
  • 2007-05-02 19:32

Instämmer med Tycho Sjögren, Lingon verkar vara det smidigaste alternativet om du vill automatisera ett kommando i Mac OSX.

Happy Hacking

Har installerat Ligon och satt upp en "user deamon" som genererade den här xml:en:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dt...">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>prg.awstats.updateall</string>
	<key>LowPriorityIO</key>
	<true/>
	<key>ProgramArguments</key>
	<array>
		<string>/bin/sh</string>
		<string>/ServerFiles/Apache2/webstats/cgi-bin/awstats_updateall.pl</string>
		<string>now</string>
		<string>-awstatsprog=/ServerFiles/Apache2/webstats/cgi-bin/awstats.pl</string>
	</array>
	<key>ServiceDescription</key>
	<string>Updates AWStats for att domains</string>
	<key>StartCalendarInterval</key>
	<dict>
		<key>Hour</key>
		<integer>3</integer>
		<key>Minute</key>
		<integer>0</integer>
	</dict>
</dict>
</plist>

Men det det gick inte bättre för det. Med största sannolihet gör jag såklart något fel. Men jag vet inte vad.

1
Bevaka tråden