Permalänk
Medlem

CRONTAB och BASH

Hej Alla!

Jag har ett problem som jag inte lyckas redas ut.

Jag har ett bashscript, väldigt enkelt:

#!/bin/bash
rm -f /tmp/*.*

Jag vill köra detta scriptet som sudo eftersom min vanlig inloggade användare inte har rättigheter att rycka filer från /tmp/ via crontab.

I min sudo crontab (sudo crontab -e) har jag:

1 * * * * bash /var/www/rmuser.sh

(1 minut är bara för att testa om det går att köras alls).

Men detta körs inte alls.

Vad gör jag för fel?

Väl mött,
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

Tja!

Är osäker på om du behöver ha exekveringsflaggan satt?
Prova
sudo chmod u+x /var/www/rmuser.sh

#!/bin/bash
rm -f /tmp/*.*

Har du provat att ta bort punkten eller vill du verkligen bara ta bort filer som innehåller en punkt?

Permalänk
Medlem
Skrivet av Leoj:

Tja!

Är osäker på om du behöver ha exekveringsflaggan satt?
Prova
sudo chmod u+x /var/www/rmuser.sh

Hm inte säker på om det behövs (Dock inte provat ) då scriptet går att köra som sudo bash rmuser.sh?
Kan prova ändå.

Skrivet av Leoj:

Tja!
#!/bin/bash
rm -f /tmp/*.*

Har du provat att ta bort punkten eller vill du verkligen bara ta bort filer som innehåller en punkt?

Yes, eftersom filerna som jag vill ta bort alltid heter "username".dat.

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

Kanske du egentligen vill köra
su
och sen
crontab -e

Permalänk
Medlem

Kan vara så att "crontab användaren" som kör scriptet inte har rm i sin $PATH.
Prova ändra scriptet till:

#!/bin/bash /bin/rm -f /tmp/*.*

Eller lägga till 'PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' utan enkelfnuttar i sin användares crontab fil.

Har användaren bash rätt att ta bort filerna? Förstår inte heller varför du måste starta en hel bash cirkus för att ta bort lite filer. Dash/ash/sh fungerar utmärkt.

Lättast hade väl varit att lägga till:
1 * * * * root /bin/rm -f /tmp/*.*

I /etc/crontab

Permalänk
Medlem
Skrivet av Leoj:

Kanske du egentligen vill köra
su
och sen
crontab -e

Yes, sen en annan sak:

Om jag vill att scriptet körs vare minut ska d väl inte vara 1 * * * * * utan */1 * * * *?

EDIT: Allt ok nu.

Misstänker två fel: */1 samt chmod +x

Tusen tack för all hjälp!

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

/bin/bash i crontab, inte bara bash
Sen även som terrax skriver */1

Visa signatur

RIPE LIR

Permalänk
Medlem
Skrivet av Kyroz:

Har användaren bash rätt att ta bort filerna?

Men vänta nu? Jag trodde att du var tvungen att köra bash (som i konsollen bash "script".sh) i crontab?

därav att det står bash /katalog/filnamn.sh.

Inser nu mitt korkade misstag där också...

Mvh.
Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem
Skrivet av terrax:

Men vänta nu? Jag trodde att du var tvungen att köra bash (som i konsollen bash "script".sh) i crontab?

därav att det står bash /katalog/filnamn.sh.

Inser nu mitt korkade misstag där också...

Mvh.
Christian

Du har ju redan specificerat hur filen ska tolkas i och med första raden i scriptet är #!/bin/bash.
Lättast att exekvera ett script är att köra "./script.sh" isåfall, då märker man direkt om man glömt att chmod:a scriptet.