Debian

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1424
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: Debian

Beitrag von davidvajda.de »

Ich lerne heute wieder - wie immer - aber sie wissen ja - ich will ihnen Beiträge zu Linux jeden Tag schreiben, beim letzten Mal blieben wir bei sed hängen, was ich durch eigene reguläre Ausdrücke ersetzte - also das Thema. Das war auch richtig so. Aber, ich lerne heute, ganz normal, aber ohne Gelaber, ich drehe das heute um - ich schreibe erst den Beitrag - zum Lernen natürlich auch wieder neues Material
Aber: Heute das Thema - sysvinit und systemd -

Also es gibt quasi mehrere ideologische Bereiche bei Betriebssystemen

Das erste ist so zu sagen, der Minix-Quelltext. Und man muss ungefähr wissen, worum es geht. Speicherverwaltung und Co. Ich war auf dem technischem Gymnasium - was jedes Mal rein geflogen ist, wenn der Lehrer kam, waren Papiere über das Paging - das ist der Knüller, bei Betriebssystemen. Und die Klassenkameraden waren alle schon am Schimpfen

Es gibt auch andere Kurse zu Betriebssystemen, die erklären die Strategien, zum Beispiel zu - Signalen - wie Prozesse Signale austauschen. Dazu gibt extremst ausbaufähige Algorithmen. Weil es ist ja so - wenn ich ihnen ein Signal schicke und sie sind bereit, das zu empfangen - dann alles OK. Angenommen sie sind gerade beschäftigt - dann müssen sie mir eine Antwort geben - was passiert, wenn die Antwort im falschen kommt - es kommt zu Überschneidungen, unter Umständen

Ich denke es ist sinnvoll darüber nach zu denken, aber ehrlich gesagt: Verstehen sie lieber den Quelltext.



trotzdem: Ein anderes Thema, das ist: Der einbau des Betriebssystems in den PC.

https://www.henkessoft.de/

Das ist ganz nett. Und hier geht darum, dass sie Code auf die Festplatte so kriegen, dass das vom Computer geladen wird. Das ist gar nicht schwer.

https://www.henkessoft.de/OS_Dev/OS_Dev1.htm

Sie haben eigentlich nur eines zu tun:

Sie haben zu schreiben

Code: Alles auswählen

  times 510-($-$$) db 0
  db 0x55
  db 0xAA
und bringen das auf ihre ersten 512 Byte der Platte. Das klingt jetzt absurd - erstens, was soll das heissen -

Erstens sie müssen Assembler können - gut, dann müssen sie Befehle wie

Code: Alles auswählen

mov, add, sub, mul, div, je, jne, ...
können. und sie müssen halt, das ins Assembler machen und das ist die Sprache des PC's. Und, wenn sie Assembler lernen, dann ist das gut - blos, sie messen den Daten keine Bedeutung bei. Das wird ihnen egal sein - ob ihre Zeichenkette halt

Code: Alles auswählen

512 Byte
gross ist. Und jetzt noch eine Kunst. Es gibt Benutzer, die sagen halt, sie bearbeiten Bilder. Das ist deren gutes Recht. Trotzdem: Man kann ein Bild von den Bytes her - oder halt optisch. Und jede Datei hat quasi magische Zeichen. windows Bitmap - benutzt oder so - hat bestimmte Bytes am Ende, also Werte. Und auf den ersten

Code: Alles auswählen

511 Byte
bis

Code: Alles auswählen

512 Byte
der Festplatte sind diese:

Code: Alles auswählen

  db 0x55
  db 0xAA
Wenn die da drauf sind - dann wird das BIOS den Sektor auf jeden Fall in den Arbeitsspeicher und auführen. Die Frage, was ausführt. die Assembler Befehle. die davor stehen. Das genügt für den ersten Einstieg in den Bootloader - und die Frage ist - wie kriegen wir das auf die Festplatte - da ist natürlich der Windows Nutzer ratlos

Der Windows Nutzer kennt
Ich rate ihnen das nicht nach zu machen, wenn sie ihr System nicht schrotten wollen, nehmen sie ein PC ohne wo sie getrost experimentieren können. Sie müssen das auf die Festplatte 1:1 bekommen. Das geht mit

Code: Alles auswählen

dd if=sektor.bin of=/dev/sda bs=512 count=1
Die

Code: Alles auswählen

sektor.bin
zum Beispiel, die kann auch anders heissen, die erzeugen sie mit dem Assembler . Sie müssen das binär übersetzen. Das heisst, normalerweise müssen wir Programme erzeugen, die unter Linux ausgeführt werden, hier ist es anders - das Assembler-Programm wird 1:1 von den Assembler Befehlen in Binärcode umgewandelt. Und das geht, weil unsere

Code: Alles auswählen

add, sub, div, mul, cmp, je, jne
das sind alles Werte, die lassen sich umwandeln

Gut, das ist der eine Teil vom Betriebssystem. Das ist aber ein bisschen Mau. Das ist kein Betriebssystem. Ein Betriebssystem hat gewisse Aufgaben - dazu gehören, Programme in den Arbeitsspeicher laden und als Prozesse ausführen - dazu gehört die Verwaltung von Dateien - oder das Multitasking. Das macht ein Betriebssystem. Jetzt gibt es Strategien und die Strategien werden ihnen dann erklärt in Form von, dass sie Signale untereinander austauschen. Ich denke, es ist der Mittelweg zu finden, sie lesen am Besten

Code: Alles auswählen

MINIX
. das tut am meisten weh und wird somit der richtige Weg sein - ohne Fleiss kein Preis.

Umgekehrt gibt es einen ganz anderen Ansatz - sie benutzen ein Betriebssystem. Am Ehesten werden sie ein Betriebssystem kennen lernen, indem sie es benutzen. Und: Der zweite Witz, ist das mit dem Paging. Damit können sie die Leute ärgern - weil, wenn der Lehrer 100x mit seinen Papieren rein kommt - sie müssen Andrew S. Tanenbaum lesen, da kommt dann halt so eine graphische Abbildung vom Paging und das will halt nicht in den Kopf rein.

Der Witz ist nämlich, dass sie Mathematik können müssen. In der Mathematik gibt es Abbildungen

Code: Alles auswählen

f(m) = n
f:N->N
Jetzt müssen sie wissen, gibt es in der Mathematik Zahlenbereiche. Das heisst, es gibt die Natürlichen Zahlen

Code: Alles auswählen

0, 1, 2, 3, ...
Es kommt nicht nur drauf an, dass sie die natürlichen Zahlen haben, die bis unendlich gehen, sondern es kommt darauf an - wie gross die Maximale Zahl und minimale Zahl ist: Das heisst, sie haben Zahlenbereiche

Code: Alles auswählen

0 ... 11
0 ... 2047
0 ... 1023
Und so weiter. Das brauchen sie für das Paging. Eine normale Funktionsvorschrift lautet der Art

Code: Alles auswählen

f (n) = 2*n
f (n) = 3*n
f (n) = n/2
f (n) = n+1
f (m) = 2*m
Eine Funktionsvorschrift kann aber auch anders aussehen. Das bedeutet

Code: Alles auswählen

f(3) = 2
f(2) = 0
f(1) = 1
f(0) = 3
Das heisst, wir geben jeden Wert einen Ausdruck finden, mit dem wir die Werte, von den Argumenten errechnen können.

Und so weiter. Es gibt auch die Funktion

Code: Alles auswählen

rand ()
Diese gibt quasi zufällig -
das entspricht am Ehesten unserem Paging. Es gibt generell auf den ersten Blick, keine eindeutige Zuordnung zwischen dem Argument und dem Funktionswert. Und: Jetzt kommt der nächste Schritt. Wir haben es bei ganzen Zahlen, die möglicht diese Binär dar zu stellen, oder wir haben die Möglichkeit sie in unserem Dezimalsystem dar zu stellen.

Der Unterschied zwischen Dezimalsystem und Binärsystem ist gering. Also wir haben quasi die Zahlen

Code: Alles auswählen

0	000
1	001
2	010
3	011
4	100
5	101
6	110
7	111
So, und der Unterschied ist gering. Wir könnten anfangen unsere Funktion, jetzt auf binäre Darstellung an zu wenden. Das heisst, wir machen

Code: Alles auswählen

f(000) = 010
f(100) = 001
f(010 ) = 011
...
Jetzt besteht eine binäre Zahl, aus eventuell 2 Teilen. Oder mehr. Wenn wir eine 8 Bit Zahl angucken, heisst, das eine 8 stellige im Binärsystem. Was ich eine 6 Stellige Zahl. Wir hören es immer wieder in den Medien. Es geht um 6 stellige Beträge - es geht um Millionen. Gut, 8 Bit, das ist die Stelligkeit im Binärsystem. Das heisst, 8 Bit entspricht

Code: Alles auswählen

0000 0000
....
1001 0001
...
1111 1111
Gut, wie viele Teile kann eine 8 Bit Zahl haben - na ja, maximal 8. Minimal 1. Und 2 ist ganz gewöhnlich. wenn wir sagen und Leerzeichen teilt eine Zahl, in Binärdarstellung in zwei Teile, dann können wir das so vollziehen lassen

Code: Alles auswählen

000 01001
11 111100
1111 0010
Wir sehen, die Teile verlaufen an unterschiedlichen Stellen. Wir können auch drei Teile einführen

Code: Alles auswählen

00 11 0100
1 001 0000
wie auch immer. Beim Paging ist wichtig. Die Teilung verläuft immer an der selben Stelle

Das heisst

Code: Alles auswählen

0001 1000
1001 0101
und so weiter. Und: Wir machen das jetzt so. Den vorderen unterziehen einer Zufallsfunktion. Den hinteren Teil lassen wir gleich. Das heisst, wir führen eine Abbildung ein

Code: Alles auswählen

f(n) = m
f:N->N - aber binr
Und den hinteren Teil, lassen wir 1:1. Das heisst, wir nennen den vorderen Teil
und den hinteren Teil
Die Abbildung sieht jetzt so aus

Code: Alles auswählen

f(n) = m
f(k) = k
das wichtige ist: der hintere Teil ist eine Identität. Der Vordere Teil ist eine Zufallsfunktion. Den Hinteren Teil berühren wir nicht. Das ist unser Offset. Der Vordere Teil, ist die Abbildung von Page nach Pageframe.

Gut, Paging verstanden. Das ist der Teil - der erzeugt bei allen Grausen - das war ja der Gewinn des Linus Torvalds - bei seinem Betriebssystem das Paging ein zu führen. Damals kam der

Code: Alles auswählen

80386
auf den Markt gekommen, der hat eben im Gegensatz zum Paging unterstützt.

Und na ja, das sind so zu sagen, die einen Teile des Betriebssystem. Das sind die Eingeweide. Gut, und dann sagt man den Leuten hundert Millionen mal, hallo: Linux ist ein Kernel - und: Dann kommt - aber, wie aber, das KDE ist so schön. Und ich sage so: Erstens: Ist KDE nicht von alleine. Es gibt in C++ Bibliotheken zur Erstellung von Fenster. Es gibt die nicht so freie Bibliothek, das ist

Code: Alles auswählen

Qt
Qt4
und so weiter. Dann gibt es die Freie Bibliothek

Code: Alles auswählen

gtk+
das erstere bedient
das zweitere bedient

Code: Alles auswählen

gnome
Und das hat mit
nichts zu tun. Das bedeutet: ist nur etwas primitives, mit dem ich auf den Bildschirm eine Linie zeichne. Wo ist der Unterschied zum Fenster. der Unterschied besteht darin. Sie haben einen Videobuffer - generell ob sie Buchstaben oder Pixel zeichnen ist egal - der Pixel ist halt ein Punkt, der Buchstabe, sie müssen Zeile für Zeile, Spalte für Spalte denken. Dann haben sie ihre Linien schnell. Blos, damit haben sie kein Fenstersystem. Damit sie die Fenster haben, brauchen sie:
Aber das ist nicht der Springende Punkt. Der Witz ist - sie denken - Linux und ich denke C. Das eine ist Linux, das Betriebssystem. Das andere ist C. Und: Sie müssen, bevor sie anfangen ein Betriebssystem zu schreiben, erst Mal programmieren können. Oder wie schreiben sie ihr Betriebssystem? In Englischer oder australischer Sprache. Nein, in C. Dazu brauchen sie einen Compiler. Die Grammatik nützt alleine auch nichts. Sie brauchen Bibliotheken. Das bedeutet

Code: Alles auswählen

#include <stdio.h>
ist nicht für die Katz. Dasselbe bei KDE. Es gibt . Die KDE Programme haben ihre Fenster, im Gegensatz zum Betriebssystem Windows nicht in gewissen gelagert. Das ist bei Windows nicht automatisch so. Das ist Chaos. das komische ist - sie werden, die Fenster sind Teil des Betriebssystems, zumindest, wenn sie ernet nehmen, dass nicht, dass das OS ist, zu dem Fenstmanager. Das stimmt aber nicht. Sie können KDE Programme unter GNOME ausführen und die tun bestens. Obwohl sie aussehen wie in KDE. Der Witz ist - jedes Fenster - benutzt nicht Teile vom Betriebssystem, sondern in jedem Programm ist das Fenster gespeichert. Mitübersetzt. Und das verdanken sie . Und: Hier sind die Bibliotheken nicht

Code: Alles auswählen

#include <stdio.h>
sondern es sind komplexe Bibliotheken. Und sie benutzen und nicht . das heisst, sie haben Objekte. Und: Der Witz, dass alles unser Betriebssystem ist. Nutzer kommt, denkt Wow - das ist auch richtig so - allerdings denkt der Nutzer, er möchte die eingeweide kennen. Jetzt ist das schlecht die Eingeweide zu kennen, wenn man nicht weiss, wie das Ding so funktioniert. Wenn der Arzt kommt, der interessiert sich für sie - der weiss aber nicht, Menschen haben Arme und Beine, dann wird es schwierig

Jetzt erst Mal, Henkessoft ist nicht zu vernachlässigen. Es weisst sie darauf, was zu tun ist, damit sie ihr OS in den Arbeitsspeicher kriegen. Wenn sie das nicht wissen, dann geht nichts. Also, das ist so rum der bessere Weg.

Trotzdem ist das kein Betriebssystem. Und das ist der entscheidene Punkt. Sie müssen wissen, was es tut. Aber auch das ist nicht optimal. Die Strategie - sie müssen das Minix selber kennen, den Code.

Das ist der Weg. Gut. Und jetzt kommt ein Teil im Betriebssystem. Der ist unangenehm. Weil, dass das Betriebssystem tut ist klar. Jetzt ist die Frage, woher kommen unsere Prozesse - die Antwort lautet, wir haben viele Prozesse. Dazu gehören.

Code: Alles auswählen

alsa-utils
anacron
apache2
apache-htcacheclean
apparmor
avahi-daemon
bluetooth
console-setup.sh
cron
cryptdisks
cryptdisks-early
cups
cups-browsed
dbus
exim4
gdomap
haveged
hwclock.sh
keyboard-setup.sh
kmod
lm-sensors
lvm2
lvm2-lvmpolld
mariadb
mysql
networking
plymouth
plymouth-log
postfix
procps
pulseaudio-enable-autospawn
rsync
rsyslog
saned
sddm
smartmontools
speech-dispatcher
ssh
sudo
tor
udev
ufw
unattended-upgrades
vlc1
vlc2
x11-common



alsa-utils              Advanced Linux Sound Architecture

anacron                 anacron ist ein Computerprogramm ähnlich cron zum zeitlich gesteuerten Starten von Computerprogrammen. Im Gegensatz zu cron, welches voraussetzt, dass der Computer wie bei Servern üblich, permanent läuft, nimmt Anacron zur Bewertung nicht nur die aktuelle Uhrzeit, sondern die vergangene Zeitspanne seit dem letzten Start mit in die Entscheidung.

apparmor                AppArmor (Application Armor, auf Deutsch etwa Anwendungs(programm)-Panzerung) ist eine freie Sicherheitssoftware für Linux, mit der Programmen einzeln bestimmte Rechte zugeteilt oder entzogen werden können. Mit dieser Erweiterung wird die Mandatory Access Control (MAC) implementiert. 

avahi-daemon            Avahi ist eine freie Implementierung von Zeroconf, einer Technik zur Vernetzung von Geräten in einem lokalen Netzwerk, ohne dass diese manuell konfiguriert werden müssen. 

cron                    Der Cron-Daemon dient der zeitbasierten Ausführung von Prozessen in Unix und unixartigen Betriebssystemen wie Linux, BSD oder macOS, um wiederkehrende Aufgaben – Cronjobs – zu automatisieren. 

dbus                    D-Bus (von englisch Desktop-Bus) ist eine freie Programmbibliothek zur Interprozesskommunikation. Sie orientiert sich insbesondere an den Bedürfnissen von Desktop-Umgebungen.

exim4                   Exim (ursprünglich ein Akronym für EXperimental Internet Mailer) ist ein Mail Transfer Agent und Mailserver.

Exim ist weitgehend aufrufkompatibel zu dem sehr traditionsreichen MTA Sendmail. Seine besondere Stärke liegt in einer sehr flexiblen, aber trotzdem einfachen Konfiguration. 

hwclock.sh
keyboard-setup.sh

kmod                    In computing, a loadable kernel module (LKM) is an object file that contains code to extend the running kernel, or so-called base kernel, of an operating system. 

networking
plymouth                Plymouth ist ein Bootsplash, der 2008 von Red Hat für die Linux-Distribution Fedora entwickelt wurde.        
                        Als Bootscreen bezeichnet man im Computerjargon eine grafische Anzeige des Bootprozesses während des Ladens eines Betriebssystems. 


plymouth-log
procps
pulseaudio-enable-autospawn     PulseAudio is a network-capable sound server program
rsync                   rsync gleicht Dateien und Ordner zwischen Lokalen oder Remote Systemen ab. die Synchronisation findet von der Quelle zum Ziel statt.
rsyslog                 Rsyslog ist eine Open-Source-Implementierung des syslog-Protokolls für Unix und Unix-ähnliche Systeme. syslog ist ein Standard zur Übermittlung von Log-Meldungen in einem IP-Rechnernetz. 
saned                   (Scanner Access Now Easy)
sddm                    The Simple Desktop Display Manager (SDDM) is a display manager. It is the recommended display manager for the KDE Plasma and LXQt desktop environments. 
smartmontools           Ein Festplattenausfall kommt meist überraschend und geht oft mit dem Verlust von Daten einher. Wehe dem, der nicht vorgesorgt hat, z.B. durch ein RAID-Festplatten-Verbund oder ein Backup.
das sind aber nur unsere Server. Unsere Dämonen. das Problem ist - sie haben wahrscheinlich lauter Programme. Dazu gehört ihr Editor. Dazu gehört ihr - Mailprogramm, oder ihr Browser. Gut, die starten sie wahrscheinlich von Hand. Jetzt ist das Problem, selbst das KDE ist ein Programm. Und wenn sie ihren Mailclient starten, bevor sie ihr KDE starten, obwohl die Fenster nicht in KDE sind, wird es schwer - und: Das bedeutet, es müssen jede Menge Programme gestartet werden

gut, wer macht das? Ein unsauberes Betriebssystem, startet alle Prozesse selber. Ein sauberes Betriebssystem - vrefügt über einen Prozess, der heisst

Code: Alles auswählen

init
Und dieser Prozess hat die ID
oder Dieser Prozess darauf ist verlass, wird immer gestartet. Der startet alle Prozesse, die immer da sein sollen. Das heisst nicht, ihr Editor ist immer da - sondern das heisst, ihr Drucker tut, ihr Sound-Server tut, alles. Und: Jetzt ist die Frage - muss der immer dieselben Prozesse laden. Was sich anbietet - ist natürlich, dass das ganze man würde sagen flexibel, aber das heisst konfigurierbar gemacht wird. Konfigurierbar heisst, wir können selber festlegen - welche Prozesse gestartet werden

Zu gibt es zwei Möglichkeiten. Diese heissen

Code: Alles auswählen

sysvinit
und

Code: Alles auswählen

systemd
. Das zweitere ist sehr komplex. Das würde ich nicht empfehlen. Für eigene Sachen. Und dazu gebe ich jetzt folgende Daten durch:

Code: Alles auswählen

 Das Mini-Debian-System heißt eigentlich: initrd oder initramfs 

/init wird als erstes ausgeführt

Programm: Userspace 


Entweder:
/init = Shellscript: Wenn das initramfs durch initramfs-tools erstellt wurde 
/init = systemd Binärprogramm, wenn initramfs durch dracut erstellt wurde 

4.) Das Normale Debian-System 

init PID=1

Standardpfad: /sbin/init 

Variable mit Pfad: init 

Boot-Hilfsprogramme: 

- systemd 
- systemd-sysv
- init-system-helpers 
- initscripts 
- sysvinit-core 
- sysv-rc
- sysvinit-utils 
- lsb-base 
- insserv 
- uswsusp
- kexec-tools
- systemd-bootchart
- bootchart2
- pybootchartgui
- mingetty
- mgetty 


- systemd 
- systemd-sysv
- init-system-helpers 
- initscripts 
- sysvinit-core 
- sysv-rc
- sysvinit-utils 

systemd:
- systemd 
- systemd-sysv

system:
- systemd 
- systemd-sysv
- init-system-helpers 

sysv und sysvinit:
- systemd-sysv
- sysvinit-core 
- sysv-rc
- sysvinit-utils 

sysv:
- systemd-sysv
- sysv-rc

sysvinit:
- sysvinit-core 
- sysvinit-utils 

init und sysvinit:
- init-system-helpers 
- initscripts 
- sysvinit-core 
- sysvinit-utils 

init:
- init-system-helpers 
- initscripts 

sysvinit:
- sysvinit-core 
- sysvinit-utils 


1.) core
2.) rc
3.) utils
4.) helpers 


- systemd 
- sysv
- init-system
- initscripts 
- sysvinit


systemd-init-Prozess 

systemd 

1.) init 
2.) systemd 
das brauchen sie - nichts anderes brauchen sie. Und, dann kommt dazu:

Code: Alles auswählen

/etc/init.date

case "$1" in 
    start) 
        echo "Starting foo"
        sudo -u foo-user bash -c ...
    stop)
        echo "Stopping foo"
        sudo -u foo-user bash -c ...
        sleep 2
    *)
        echo "Usage: /etc/init.d/foo {start|stop}"
        exit 1
esac
exit 0


/etc/init.d

start-stop-daemon
start-stop-daemon --start
start-stop-daemon --start --exec 
service bla start
service bla stop
service bla install 
systemctl daemon-reload
journalctl -xe


sudo update-rc.d celeryd defaults
sudo update-rc.d celeryd enable

#!/bin/bash 
#
# twitter initscripts
#
### BEGIN INIT INFO
# Provides:          python
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: This is for Twitter
# Description: This is for Twitter
### END INIT INFO






systemd-sysv                fast das gleiche wie systemd
init-system-helpers         Dieses Paket enthält erforderliche Hilfsprogramme für das Umschalten zwischen den                       verschiedenen Debian-Init-Systemen (z.B. sysvinit oder systemd)
initscripts                 The scripts in this package initialize a standard Debian system at boot time and shut it down at halt or reboot time. 
sysvinit-core               This package contains programs required for booting a Debian system and doing basic process management. 
sysv-rc                     Dieses Paket stellt die Unterstützung für ein System zur Verfügung, das analog zu System-V das Booten, Wechseln zwischen Runleveln und Herunterfahren ermöglicht. Diese werden durch symbolische Verweise in /etc/rc?.d/ eingerichtet. 
sysvinit-utils              Dieses Paket enthält die wichtigen System-V-artigen Werkzeuge.
lsb-base                    Die Linux Standard Base (LSB, http://www.linuxbase.org/) ist ein vereinheitlichtes Basissystem, auf das Linuxanwendungen von Dritten aufbauen können. 
insserv                     The insserv program is used by the standard SysV-based init system. It updates the order of symlinks in /etc/rc?.d/ based on dependencies specified by LSB headers in the init.d scripts themselves. 
kexec-tools                  Dieses Paket bietet Werkzeuge, um einen Kernel in den Speicher zu laden und dann einen direkten »Neustart« in diesen Kernel durchzuführen. Dazu wird die Kernel-Funktion kexec aufgerufen, um den normalen Boot-Prozess zu umgehen
systemd-bootchart             is a tool, usually run at system startup, that collects the CPU load,
       disk load, memory usage, as well as per-process information from a running system.
       Collected results are output as an SVG graph. 
bootchart2                      bootchart2 instruments your boot process and provides a tool to render a graph of what was happening during the boot process later.
 Mgetty                     ist ein vielseitiges Programm, das alle Aspekte eines Modems unter Unix abdeckt.
    
                        Mit dem Programm »mgetty« können Sie ein Modem für den Umgang mit externen Logins und den Faxempfang einsetzen. Auch können Sie das Modem als Anrufbeantworter einsetzen, ohne beim Anrufen zu stören. 

Und das ist das entscheidende, das werden sie verstehen oder nicht. Das entscheide, ist zunächst, sie müssen ihren Service starten. Das geht mit

Code: Alles auswählen

service myservice start
service myservice stop
Jetzt haben sie mit Debian das Problem. Sie müssen vorher immer als erstes machen

Code: Alles auswählen

PATH="$PATH:/usr/sbin"
Ohne das letztere, wird

Code: Alles auswählen

/usr/sbin
dann kriegen sie kein - Zugriff auf

Code: Alles auswählen

service
und so weiter. Und: das ist das entscheidende, neben diesem ganzen Theater, müssen sie Bash-Programmierung. da verweise ich auf folgendes:

viewtopic.php?t=85

viewtopic.php?t=84&start=4

Ohne Bash werden sie nicht weiter kommen. Keine Chance - darum gehen die Skripte. Wenn sie:

Code: Alles auswählen

service myservice start
service myservice stop
starten. dann brauchen sie in

Code: Alles auswählen

/etc/init.d
ihre Skripte. Die heissen

Code: Alles auswählen

/etc/init.d/mydaemon1
/etc/init.d/myserver2
was verbirgt sich dahinter. Sie schreiben ein Programm in C. Das sieht so aus

Code: Alles auswählen

#include <stdio.h>

int main (void) {
   printf ("Hallo Welt");
return 0;
}
das übersetzen sie: mit

Code: Alles auswählen

gcc hallo.c -o hallo
dann haben sie das Programm und führen das aus

Code: Alles auswählen

/home/user/hallo
was macht ihren server aus? Nichts. Sie müssen den in

Code: Alles auswählen

/etc/init.d
und das geht nicht, indem sie das wie bei

Code: Alles auswählen

systemd
mehr oder weniger, in eine Liste eintragen - sondern sie brauchen ihr Start-Stop Skript. das bedeutet. Sie müssen jetzt zwei dinge schreiben. Sie brauchen Programmiersprache C für das Programm und sie brauchen Programmiersprache . damit das - Programm als Server geladen werden kann. Udn das geht mit dem Hier:

Code: Alles auswählen

#!/bin/bash 
#
# twitter initscripts
#
### BEGIN INIT INFO
# Provides:          python
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: This is for Twitter
# Description: This is for Twitter
### END INIT INFO
Dann müssen sie rein schreiben

Code: Alles auswählen

#!/bin/bash 
#
# twitter initscripts
#
### BEGIN INIT INFO
# Provides:          python
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: This is for Twitter
# Description: This is for Twitter
### END INIT INFO

case "$1" in 
	start)
		;;
	stop)
		;;
	restart|reload)
		;;
esac
Was wir jetzt erleben, ist eine

Code: Alles auswählen

switch-case
anweisung, ich benutze so etwas selten. Ich benutze eher -

Code: Alles auswählen

if-then-else
das könnten sie hier vielleicht auch benutzen, ich habe es nicht ausprobiert. vom Bash-Quelltext ist das nicht anders - wie jedes Bash-Skript. Nur der Anfang mit den Gartenzäunen ist anders und das ist verpflichtend. In C heisst, die Anweisung

Code: Alles auswählen

switch (varname) {
   case 1:
   case 2:
...
}
Man sieht Programmiersprachen sind ähnlich und doch anders. Bei C ist das der einzelne Falle. Und eigentlich heisst das

Code: Alles auswählen

switch
. Egal. Jetzt müssen sie unterscheiden zwischen

Code: Alles auswählen

start
, und vielleicht

Code: Alles auswählen

restart
. Das sind werte. Und die nicht vergessen. Die sind teil von Bash-Syntax. Damit wäre das Start-Stop Skript fertig und sie können ihre Programme als Server laden. Das tut miterledigen. Das startet alle Programme, aber, es erlaubt das hinzufügen.
Antworten