Was ist der Unterschied?

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hallo zusammen

wir haben hier ein ziemlich merkwürdiges Problem. Es geht um einen cronjob welcher die dhcp Logs rotieren soll und dann dem syslog einen Schubser gibt, damit dieser bemerkt dass die Logfiles rotiert wurden. Bis anhin habe ich dazu den Job mit crontab -e eingetragen. Allerdings hat sich nun herausgestellt, dass der logrotate gemacht wird, aber der syslog es nicht mitbekommt und daher überhaupt nichts mehr loggt. Wenn ich jedoch den gleichen Job nehme und direkt in /etc/crontab eintrage, dann funzt alles wie gewünscht und nach dem Rotieren loggt syslog ins neue (leere) File. Mir war bis anhin nicht bewusst, dass crontab -e das anders machen würde. Kennt jemand den Grund wieso das unterschiedlich gehandhabt wird? Beide Jobs laufen als root, also wird es kaum an den Rechten liegen
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Nach meinem Stand kennt crontab -e aber nicht das Tabellenfeld 'user', sondern nur minute, hour, day, month, weekday und command - d.h. es könnte damit durchaus eine Frage der Rechte sein.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
klar root braucht es via crontab -e nicht, da dies automatisch den crontab des jeweiligen Users bearbeiten müsste. Der Job ist auch bei crontab -e als root gelaufen, sonst hätte er nie rotieren können mangels Schreibrechten auf die Logfiles ;-)
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
ok, hast recht. Und Du hast eine /etc/logrotate.d/dhcp mit einem Neustart des syslog, was sauber durchläuft?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Und Du hast eine /etc/logrotate.d/dhcp mit einem Neustart des syslog, was sauber durchläuft?
habe zwar nur eine /etc/logrotate.d/rsyslog aber dort drin ist der rotate auch für das dhcp Log definiert. Also sollte das wohl passen ;-) Der Job macht keinen echten restart des syslog sonder einfach einen reload was gemäss Manual reicht, dass der syslog erkennt, dass das Log rotiert wurde. Da aber das genau gleiche direkt im /etc/crontab funzt müsste also von der Konfig her alles passen. Der Aufruf für den cron ist /usr/sbin/logrotate -f /etc/logrotate.conf
Ich würde die Sache mit den Rechten verstehen wenn es im crontab -e einfach nichts machen würde, aber der macht scheinbar schlicht nur die Hälfte
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Da fällt mir nur ein, dass bei rsyslog mal in einigen Fällen der Status nicht korrekt zurückgemeldet wurde, ein Restart lief damit nicht sauber - wobei sich das dann eigentlich auch im Fall mit etc/crontab zeigen müsste (Du kannst ja aber dennoch mal testweise das 'reload rsyslogd...' ersetzen durch ein '/bin/kill -HUP $(/bin/pidof rsyslogd)...'
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hi Frogman

werde das am Mo im Büro mal probieren, obwohl ich nicht glaube, dass es helfen wird. Du sagst ja selber, dann müsste es in /etc/crontab dasselbe sein und genau das denke ich auch. Wir machen den Logrotate auf allen Servern so d.h. mit abschliessenden rsyslog reload und es funzt eigentlich immer zuverlässig. Der Unterschied ist dabei wieder, dass der daily logrotate per default via /etc/crontab ausgeführt wird und nicht im Usercrontab mit crontab -e. Drum würde ich was wetten, dass es irgendwie geartet am cron liegen muss und nicht am rsyslog :)

Gruss

tobi
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat