PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cron-job und sun-solaris



_J_
04.12.02, 12:35
Hi Leute,

ich habe versucht, unter solaris mit 'crontab -e' einen neuen
cron anzulegen. Anstatt des VIs bekomme ich dann aber auf
der Console lediglich eine '98' angezeigt und in der nächsten
Zeile blinkt mein Cursor....
Wie mache ich das denn unter Solaris? Wo liegt dort die cron
datei?

Bevor ich wieder gesteinigt werde: ich habe bei google
nachgesehen! Nur leider bekommt man in zusammenhang
mit crons fast ausschließlich irgendwelche Hoster angezeigt,
die auch crons auf ihren Solaris-Kisten anbieten :)

Vielen Dank schonmal!

Jürgen

cstux
04.12.02, 12:39
Setzt mal die Variable EDITOR auf vi

BEI SH
export EDITOR=vi

BEI TCSH
setenv EDITOR vi

Dann drüfte es funktionieren.

_J_
04.12.02, 13:03
leider funktioniert das auch noch nicht.
mit dem export-befehl bekomme ich die
Fehlermeldung: vi ist kein gültiger Bezeichner.
Wo liegt denn diese crontab oder wie auch
immer die bei Solaris heißen mag?
Kann ich die nicht dann direkt mit vi editieren,
also nicht über 'crontab -e' sondern eher sowas
wie 'vi /etc/crontab', das funktioniert doch unter
Linux auch. Gibt es da ne Möglichkeit?
Sorry, sitze zum ersten Mal vor ner Solaris-Kiste
und bekomm langsam graue Haare :confused:

Vielen Dank!

Silvio
04.12.02, 13:30
Hi _J_

Du bekommst wenigstens noch graue Haare, meine sind schon fast alle weg:D

Also bei Solaris ist das so, jeder Benutzer kann Einträge zur cron-Tabelle hinzufügen. Die crontab-Einträge der Benutzer werden in separaten Dateien gespeichert, die üblicherweise im Verzeichnis /var/spool/cron/crontabs abgelegt sind. Die crontab-Dateien der Benutzer werden nach dem Namen des Benutzers benannt, beispielsweise heisst die crontab-Datei für root /var/spool/cron/crontabs/root . Die crontab-Dateien werden nicht direkt, sondern mit dem crontab -Befehl bearbeitet.

Das wichtigste habe ich fast vergessen: gib mal crontab -e ein...


Hoffe es hilft :)

Silvio

_J_
04.12.02, 13:48
Hi Silvio,

:eek: dann wirds bei mir wohl auch nicht mehr lang dauern, bis die letzten Haare weg sind *grins*

Dank Dir, das hat mir weitergeholfen. Ich weiß ja im Prinzip, wie der Krempel funktioniert, nur ist es doch etwas anders als Linux :)
Also ich habe jetzt folgendes gemacht: Habe die Datei /var/spool/cron/crontabs/root editiert und anschließend ein 'crontab /var/spool/cron/crontabs/root' gemacht. So sollte es doch eigentlich funktionieren. Ich warte mal ab, ob der Cron gestartet wird.

>Das wichtigste habe ich fast vergessen: gib mal crontab -e ein...

Habe ich ja, dann steht in der nächsten Zeile der Console eine 98 und darunter blinkt der Cursor. Versuche ich das jetzt mit CTRL-C abzubrechen, bekomme ich darunter ein Fragezeichen... cstux meinte, es könnte die Variable EDITOR nicht gesetzt sein (ist sie auch nicht), aber ich kann sie auch nicht setzen ... jedenfalls nicht so, wie oben von cstux beschrieben.

Wäre schön, wenn es auf Dauer gesehen auch mit 'crontab -e' funktioniert, aber erstmal habe ich jetzt das geschafft, was ich wollte :)

THX!
Jürgen (J)

cstux
04.12.02, 14:00
Es kommt auch darauf an welche Shell du verwendest.

Versuch es mal mit

tcsh

setenv EDITOR vi

# Nur noch mal sicherheitshalber zur Kontrolle
env | grep EDITOR

crontab -e

Vielleicht funktionierts.

Da das Problem bei vielen alten UNIX Systemen wie IRIX, HPPUX und SUN auftrat.
Da ein andere EDITOR in der Config eingetragen.

Wenn nicht schreib einfach nur mal die von dir verwendete Shell in Forum.
KSH, SH, BASH, TCSH, CSH

_J_
04.12.02, 14:41
Hi cstux!

also tcsh scheint es wohl nicht zu sein - setenv kennt er nicht.
Wie bekomme ich denn raus, welche Shell da läuft?

PS: wenn ich env eingebe, ist die Variable EDITOR nicht dabei!

cstux
04.12.02, 14:44
wenn du env eingibst einfach nach der Variable SHELL suchen.

Da dürfte es drin stehen.

_J_
04.12.02, 14:59
Du hast Recht ;-)

es ist SH.

wd
04.12.02, 15:11
1.) lege dir eine Datei .kshrc im $HOME des Users mit folgendem Inhalt an:

-----------------------------------------------------------------------------
set -o vi
set -o viraw
set -o monitor

alias ts='eval `tset -s -Q` '

PS1="[`/usr/ucb/whoami`@`/usr/ucb/hostname`:\$PWD] # "
-----------------------------------------------------------------------------



2.) lege dir eine Datei .profile im $HOME des Users mit folgendem Inhalt an:

-----------------------------------------------------------------------------
:
ENV=$HOME/.kshrc
export ENV

EDITOR=vi
export EDITOR

PATH=/usr/local/bin:/usr/bin/:/usr/sbin:/sbin:/etc
export PATH
-----------------------------------------------------------------------------



3.) setze in der /etc/passwd die Shell des entsprechenden Users auf:

-----------------------------------------------------------------------------
/bin/ksh
-----------------------------------------------------------------------------


4.) log dich als User ein (bspw. testuser)

-----------------------------------------------------------------------------
su - testuser
-----------------------------------------------------------------------------


5.) erstelle eine neue crontab für den User testuser

-----------------------------------------------------------------------------
crontab -e

Ein Beispiel wäre:
24 13 * * * echo "Hallo User"
-----------------------------------------------------------------------------


6.) siehe in deiner mail nach, ob ein output von cron geschrieben wurde:

-----------------------------------------------------------------------------
mail
-----------------------------------------------------------------------------


Das war's auch schon. Viel Spass mit crontab.

cstux
04.12.02, 15:15
Also dann ist der Befehl export schon richtig.

Also versuch es mal mit verscheidenen Varianten

export EDITOR=vi
export EDITOR='vi'
export EDITOR="vi"

Du darfst auf keinen Fall ein leerzeichen haben. Nur zwischen export und Editor.
Es dürften auf jedenfall alle Varianten funktionieren.

Silvio
04.12.02, 16:35
Hallo _J_

Sorry, wegen dem Befehl, habs nicht ganz durchlesen und nicht gemerkt, dass du dass schon versucht hast. Wenn du mit korn shell arbeitest, kannst du mit dem Befehl set -o nachschauen was für Variablen dass gesetzt sind (Current option settings).

wd hat ja im letzten Posting genau beschrieben wie du dann vi als Standart Editor setzten kannst


Silvio

_J_
05.12.02, 11:17
hmmm, leider funktioniert das alles immer noch nicht so wie ich es gerne hätte.
Also, die Shell ist SH und die Sache mit 'EXPORT...' klappt irgendwie nicht. Die
anderen Tipps waren ja für die ksh, welche ich nicht einsetze.

Nun ist noch ein weiteres Problem aufgetreten. Ich möchte einen Cron als
User 'ora816' ausführen, klappt aber nicht.
Ich habe eine Datei namens 'ora816' im Verzeichnis /var/spool/cron/crontabs
angelegt und dort meinen Befehl eingetragen. Der Cron wird auch ausgeführt,
allerdings nicht als User ora816, denn das Programm, welches ich ausführen
möchte, darf nur der User ausführen, ansonsten kommen Fehlermeldungen.
Genau diese Fehlermeldungen habe ich jetzt im Root-Postfach.
Was mache ich blos falsch?....

cstux
05.12.02, 11:49
Hi,

schau mal nach ob die Datei auch dem Benutzer ora816 gehört.

Wenn nicht mach einfach mal ein "chown ora816 /var/spool/cron/crontabs/ora816".

_J_
05.12.02, 12:20
Die Datei gehörte nicht dem User ora816. Jetzt habe ich es geändert, funktioniert
aber trotzdem nicht :-( ... Ich habe auch ein chgrp gemacht, um die Datei dann auch
zusätzlich noch der entsprechenden Gruppe zuzuweisen - hat auch nichts geholfen :(
Es kommen immer noch die Fehlermeldungen in root-postfach... ich weiß nicht mehr
weiter....

wd
09.12.02, 15:29
@_J_

was ist denn daran so schwer ???

Geh einfach so vor, wie ich es beschrieben habe und es klappt.

Nachdem du Schritt 1 + 2 durchgeführt hast, lese die Dateien:

.profile und .kshrc neu ein.

_J_
09.12.02, 15:46
@wd

...keine Ahnung, warum das so schwer ist - mit Linux isses für mich
kein Problem - also 'sollte' dies auch kein Problem sein. Leider kann
ich den Cron immer noch nicht dazu bewegen, daß er seinen Dienst
als User 'ora816' verrichtet.

Das was Du mir beschrieben hast, war aber ja nur mein Anfangs-
Problem. Jetzt habe ich das ja soweit im Griff, daß ich die Crons
eingerichtet habe, nur wie gesagt, schlagen die Dienste fehl, weil
Cron versucht, die Aufrufe als root auszuführen, was bei den
oracle-programmen dann fehlschlägt :(

_J_

Simkin
09.12.02, 22:23
Hallo _J_

prüf mal ob die ksh installiert ist: which ksh.

Wenn ja kann du mit ksh einfach in die Korn Shell wechseln und die Tipps weiter oben ausprobieren. Wenn du ständig die ksh haben willst ändere es einfach in der /etc/passwd ab.

Falls es keine ksh gibt mußt du die Enviroment Variablen so setzen:

EDITOR=vi
export EDITOR

Du kannst die Oracle Skripte auch mit root ausführen indem du zu den orauser switched.
Crontab von root:

12 10 * * * su - ora816 -c "oraclescript.sh"

Fehlermeldungen des Scripts kriegt immer noch root. Das Scripte läuft aber mit den Rechten und der Umgebung des Oracle Users.

P.S. Oracle 8.1.6 wird übrigens nicht mehr supported.

_J_
19.12.02, 11:47
So, ich habe mir jetzt ein Shell-Script gebastelt, welches sämtliche
Umgebungsvariablen setzt und dann mein Oracle-Export-Script
ausführt. Das funktioniert soweit.
Jetzt habe ich das auch sogar in die Crontab eingetragen bekommen
und er hat es gestern auch problemlos ausgeführt.

Allerdings habe ich nun ein neues Phänomen entdeckt, welches ich
mir nicht erklären kann: Wenn die Maschine gebootet wird, ist mein
Cron weg und es steht wieder ein ganz alter Mist drin, den mein
Vorgänger da noch eingatragen hatte - kann es sein, daß die Crons
noch irgendwo anders gespeichert werden? Denn das, was jetzt
dort drin steht habe ich definitiv aus der Datei gelöscht.

Vielen Dank an alle...

_J_