Vraag


Acties:
  • 0 Henk 'm!

  • F-Tim
  • Registratie: November 2003
  • Laatst online: 25-07 15:09
Gents,

ik zit al enige tijd te stoeien met het automatisch blanken van mijn display van mijn Debian installatie. De machine boot direct naar tty1, en niet naar een window manager. Aangezien het een server was die in principe 24x7 draait, heb ik het een paar keer "opgelost" door handmatig interactief in te inloggen op de tty1 en het commando sudo setterm -blank 1 uit te voeren. Vervolgens gaat de console netjes na 1 minuut op "blank".

Iedere server moet wel af en toe gereboot worden (door security of kernel updates), dus ben ik gaan kijken naar hoe dit te automatiseren/configureren was.Met behulp van google, en wat andere fora kwam ik erachter dat ik een init.d script moet aanmaken, dus ben ik daarmee aan de slag gegaan.

Ik heb een nieuw script aangemaakt in /etc/init.d/ met de naam "setterm", en de volgende inhoud:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#! /bin/sh
### BEGIN INIT INFO
# Provides:          setterm
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Set TTY screen timeout 
# Description:       Set TTY screen timeout to 1 minute
### END INIT INFO
[ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start
for term in /dev/tty[0-9]*; do # select all ttyNN, but skip ttyS*
    setterm -blank 1 >$term <$term
done


Ik kwam op het script uit via dit forum, en heb ik het iets getweakt door de ### blokken toe te voegen omdat update-rc anders niets kon vinden.

De file heb ik executable gemaakt middels # chmod +x /etc/init.d/setterm, en vervolgens heb ik # update-rc.d setterm defaults uitgevoerd om het rc-script te activeren.

Vervolgens kan ik ook met ls -l /etc/rc?.d/*setterm zien dat er meerdere links zijn aangemaakt binnen rc0 t/m rc6.

Echter... na een reboot blijft het scherm gewoon aan.

Ik heb ook al geprobeerd om de regel [ "$1" == "start" ] || exit 0 # only initialize everything when called as /etc/init.d/setterm start te verwijderen, maar dat bood geen soelaas.

Als ik het script aftrap met ./setterm in een SSH console, dan krijg ik de volgende meldingen:
./setterm: 13: ./setterm: cannot create /dev/tty1: Permission denied
En als ik het als sudo uitvoer:
setterm: terminal xterm-256color does not support --blank

Ofwel, scripted werkt het niet, maar handmatig het commando uitvoeren werkt wel 8)7

Heeft één van jullie de gouden tip wat ik verkeerd doe? Want ik loop een beetje vast in mijn te beperkte linux kennis momenteel :X

Wanna play?

Beste antwoord (via F-Tim op 21-12-2020 11:45)


  • MartenBE
  • Registratie: December 2012
  • Laatst online: 17-07 12:29
Thymo schreef op zaterdag 19 december 2020 @ 18:39:
Je kan ook in je bootloader `consoleblank=X` als kernel parameter meegeven. Waar X het aantal seconden is om het scherm uit te zetten. Dit doet hetzelfde als setterm -blank en je hebt ook geen lastige scripts nodig.
Het voordeel hierbij is ook dat dit werkt als er nog niemand is ingelogged. Je kan dit eenvoudig instellen zodat deze instelling bij kernel-updates bewaard blijven. Je hoeft gewoon een enkel bestand aan te passen:

code:
1
2
3
4
5
6
$ sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=300" # voeg deze lijn toe (X is hier dus 300 s)

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo reboot

Alle reacties


Acties:
  • +1 Henk 'm!

  • Mijzelf
  • Registratie: September 2004
  • Niet online
    setterm -blank 1 >$term <$term

setterm: terminal xterm-256color does not support --blank
Waar komt die tweede '-' in de foutmelding vandaan? Die staat niet in het script.

Ik *denk* dat de terminal emulator pas gaat draaien bij of na het inloggen, Dan kun je er dus geen commando's naar toe sturen voor je ingelogd bent, dus niet vanuit een init script.
Mogelijk kun je het commando opnemen in .bashrc, of zo.

Acties:
  • +1 Henk 'm!

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 14:44
Misschien via een crontab (van root) doen?
code:
1
sudo crontab -e

en dan toevoegen:
code:
1
@reboot /usr/bin/setterm -blank 1

Acties:
  • +1 Henk 'm!

  • hostname
  • Registratie: April 2009
  • Laatst online: 19:48
F-Tim schreef op dinsdag 15 december 2020 @ 15:03:
Echter... na een reboot blijft het scherm gewoon aan.
Grote kans dat de getty (login prompt) gestart wordt na jouw script, en de terminal weer reset.
F-Tim schreef op dinsdag 15 december 2020 @ 15:03:
En als ik het als sudo uitvoer:
setterm: terminal xterm-256color does not support --blank
Zoals beschreven in de man page van setterm checkt deze eerst is of het gebruikte type terminal de opties wel ondersteund. Dat gebeurt dmv van de $TERM environment variable, welke (omdat jouw script hem niet aanraakt) nog gewoon een type bevat dat geen blank ondersteunt (het is immers geen fysieke terminal). Als je $TERM eerst reset naar bijv. "linux" zou het wel moeten werken.

Overigens kan je dit op betere manieren oplossen dan zelf een init scriptje hacken. Zie deze link.

Acties:
  • +1 Henk 'm!

  • Thymo
  • Registratie: Juni 2014
  • Laatst online: 24-07 00:38
Je kan ook in je bootloader `consoleblank=X` als kernel parameter meegeven. Waar X het aantal seconden is om het scherm uit te zetten. Dit doet hetzelfde als setterm -blank en je hebt ook geen lastige scripts nodig.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • MartenBE
  • Registratie: December 2012
  • Laatst online: 17-07 12:29
Thymo schreef op zaterdag 19 december 2020 @ 18:39:
Je kan ook in je bootloader `consoleblank=X` als kernel parameter meegeven. Waar X het aantal seconden is om het scherm uit te zetten. Dit doet hetzelfde als setterm -blank en je hebt ook geen lastige scripts nodig.
Het voordeel hierbij is ook dat dit werkt als er nog niemand is ingelogged. Je kan dit eenvoudig instellen zodat deze instelling bij kernel-updates bewaard blijven. Je hoeft gewoon een enkel bestand aan te passen:

code:
1
2
3
4
5
6
$ sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=300" # voeg deze lijn toe (X is hier dus 300 s)

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo reboot

Acties:
  • +1 Henk 'm!

  • F-Tim
  • Registratie: November 2003
  • Laatst online: 25-07 15:09
Yeahh!!! Dat is het idd :) thanks allemaal!

Consoleblank=60 toegevoegd, en bingo-bango-presto! :)

Heb het wel met update-grub gedaan, Debian installeert default Grub volgens mij (althans, ik heb de grub2 folder niet, alleen een gewone grub folder), en dan is update-grub een stub voor jouw commando.

Wanna play?

Pagina: 1