1 |
<?xml version="1.0"?> |
<?xml version='1.0' encoding='iso-8859-1'?> |
2 |
<?xml-stylesheet href="/xsl/guide.xsl" type="text/xsl"?> |
<?xml-stylesheet href="/xsl/guide.xsl" type="text/xsl"?> |
3 |
|
|
4 |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> |
5 |
|
|
6 |
<guide link="/doc/en/rc-scripts.xml"> |
<guide link="/doc/en/rc-scripts.xml"> |
7 |
<title>Gentoo Linux 1.0 Init System</title> |
<title>Gentoo Linux 1.0 Init Systemet</title> |
8 |
<author title="Forfatter"><mail link="azarah@gentoo.org">Martin Schlemmer</mail></author> |
<author title="Forfatter"><mail link="azarah@gentoo.org">Martin Schlemmer</mail></author> |
9 |
<author title="Retter"><mail link="seemant@gentoo.org">Seemant Kulleen</mail></author> |
<author title="Redaktør"><mail link="seemant@gentoo.org">Seemant Kulleen</mail></author> |
10 |
<author title="Oversætter"><mail link="mejlholm@stud.auc.dk">Arne Mejlholm</mail></author> |
<author title="Oversætter"><mail link="mejlholm@stud.auc.dk">Arne Mejlholm</mail></author> |
11 |
|
|
12 |
<abstract>Denne guide er en introduktion til Gentoo Linux'ses init |
<abstract>Denne guide er en introduktion til Gentoo Linux'ses init |
29 |
kraftfuldt og fleksibelt nok til at sætte hvad som helst op. Dette bør |
kraftfuldt og fleksibelt nok til at sætte hvad som helst op. Dette bør |
30 |
ikke betragtes som en intro til hvordan det virker indefra; derimod, |
ikke betragtes som en intro til hvordan det virker indefra; derimod, |
31 |
er det en hurtig guide til at komme op og køre med Gentoo's init |
er det en hurtig guide til at komme op og køre med Gentoo's init |
32 |
system. Til dem der er interreseret i hvordan det virker indefra |
system. Til dem der er interesseret i hvordan det virker indefra |
33 |
... så læs kildekoden ;-) |
... så læs kildekoden ;-) |
34 |
</p> |
</p> |
35 |
|
|
43 |
<body> |
<body> |
44 |
|
|
45 |
<p>I modsætning til andre init systemer har Gentoo's runlevel'er ikke |
<p>I modsætning til andre init systemer har Gentoo's runlevel'er ikke |
46 |
adsurde navne eller tal, men er derimod lavet til formålet og bundet |
absurde navne eller tal, men er derimod lavet til formålet og bundet |
47 |
til standard runlevel'erne ved start. |
til standard runlevel'erne ved start. |
48 |
|
|
49 |
<note>Som standard er der tre runlevel'er: <e>"boot"</e>, <e>"default"</e> |
<note>Som standard er der tre runlevel'er: <e>"boot"</e>, <e>"default"</e> |
51 |
</p> |
</p> |
52 |
|
|
53 |
<p>"boot" (opstart) runlevel'en bør være standard til de fleste |
<p>"boot" (opstart) runlevel'en bør være standard til de fleste |
54 |
opsætninger og som navnet siger, er det den første runlevel der blver |
opsætninger og som navnet siger, er det den første runlevel der bliver |
55 |
kørt ved opstart. Derefter kommer <e>"default"</e> |
kørt ved opstart. Derefter kommer <e>"default"</e> |
56 |
(standard) som navnet også siger, er det den hovedsagelige runlevel |
(standard) som navnet også siger, er det den hovedsagelige runlevel |
57 |
der køres efter opstart. Til sidst er <e>"nonetwork"</e> |
der køres efter opstart. Til sidst er <e>"nonetwork"</e> |
89 |
<body> |
<body> |
90 |
|
|
91 |
<p>Fordi runlevel'er ikke er bliver bundet statisk til dem der er i |
<p>Fordi runlevel'er ikke er bliver bundet statisk til dem der er i |
92 |
init, kan der være mange flere runleveløer end det antal init |
init, kan der være mange flere runlevel'er end det antal init |
93 |
understøtter. Dette gør brugeren istand til at lave profiler eller |
understøtter. Dette gør brugeren i stand til at lave profiler eller |
94 |
virtuelle runlevel'er alt afhængigt af behovet. |
virtuelle runlevel'er alt afhængigt af behovet. |
95 |
</p> |
</p> |
96 |
|
|
97 |
<p>For eksempel kan en laptop bruger have to forskellige runlevel'er, kaldet "online" |
<p>For eksempel kan en laptop bruger have to forskellige runlevel'er, kaldet "online" |
98 |
og "offline". Dette vil tillade en aktiv runlevel når PCMCIA |
og "offline". Dette vil tillade en aktiv runlevel når PCMCIA |
99 |
netkortet sat i og en anden aktiv runlevel når det ikke er. PCMCIA |
netkortet sat i og en anden aktiv runlevel når det ikke er. PCMCIA |
100 |
scriptet kan så blive konfigureret tli at kalde <c>"/sbin/rc |
scriptet kan så blive konfigureret til at kalde <c>"/sbin/rc |
101 |
online"</c> eller <c>"/sbin/rc offline"</c> som det nu |
online"</c> eller <c>"/sbin/rc offline"</c> som det nu |
102 |
er passende, for at starte eller stoppe de rigtige ydelser alt |
er passende, for at starte eller stoppe de rigtige ydelser alt |
103 |
afhængigt af statusen af PCMCIA netkortet. |
afhængigt af statusen af PCMCIA netkortet. |
123 |
getty'er blev startet, ville X blive startet på den næste tilgængelige |
getty'er blev startet, ville X blive startet på den næste tilgængelige |
124 |
konsol. På langsommere bokse er dette ikke noget problem hvis Desktop |
konsol. På langsommere bokse er dette ikke noget problem hvis Desktop |
125 |
Manager ydelsen bliver startet i slutningen af runlevel'ens init |
Manager ydelsen bliver startet i slutningen af runlevel'ens init |
126 |
process. Getty'erne vil starte før X og den vil så starte på konsol 7 |
proces. Getty'erne vil starte før X og den vil så starte på konsol 7 |
127 |
som den bør. På hurtigere bokse vil dette ikke være tilfældet. X |
som den bør. På hurtigere bokse vil dette ikke være tilfældet. X |
128 |
starter før den getty der normalt starter på konsol nr. 2. Når |
starter før den getty der normalt starter på konsol nr. 2. Når |
129 |
getty'en starter, tager den kontrollen af tastaturet og Desktop |
getty'en starter, tager den kontrollen af tastaturet og Desktop |
134 |
ekstra runlevel'er, nemlig runlevel 'a'. Da runlevel 'a' ikke er en |
ekstra runlevel'er, nemlig runlevel 'a'. Da runlevel 'a' ikke er en |
135 |
rigtig runlevel, kalder vores "xdm" script bare |
rigtig runlevel, kalder vores "xdm" script bare |
136 |
<c>"telinit a"</c>. Dette programlægger alle ydelserne i |
<c>"telinit a"</c>. Dette programlægger alle ydelserne i |
137 |
runlevel 'a' til at køre efter den nuværende runlevle, dvs. efter at |
runlevel 'a' til at køre efter den nuværende runlevel, dvs. efter at |
138 |
alle getty'erne er oppe. |
alle getty'erne er oppe. |
139 |
|
|
140 |
<note>Mere info om runlevel 'a' kan findes ved at læse init's man sider.</note> |
<note>Mere info om runlevel 'a' kan findes ved at læse init's man sider.</note> |
233 |
</section> |
</section> |
234 |
|
|
235 |
<section> |
<section> |
236 |
<title>The NEED dependency type</title> |
<title>NEED afhængighedstypen</title> |
237 |
<body> |
<body> |
238 |
|
|
239 |
<p>This is used if a service is critical for the startup of the current service. |
<p>Denne bruges hvis en ydelse er kritisk for opstarten af af din |
240 |
|
nuværende ydelse. |
241 |
</p> |
</p> |
242 |
|
|
243 |
<pre caption="adding logger and net as a NEED dependency"> |
<pre caption="at tilføje logger og net som en NEED afhængighed"> |
244 |
depend() { |
depend() { |
245 |
need net logger |
need net logger |
246 |
} |
} |
247 |
</pre> |
</pre> |
248 |
|
|
249 |
<p> |
<p> |
250 |
<note>The services mentioned after <e>NEED</e> are critical in order for the current service |
<note>Ydelserne nævnt efter <e>NEED</e> er kritiske for at den |
251 |
to start. The current service will thus fail to start if any of the dependencies fail to start.</note> |
nuværende ydelse bliver startet i den rigtige rækkefølge. Den |
252 |
|
nuværende ydelse vil således ikke kunne starte hvis nogen af |
253 |
|
afhængighederne ikke starter. |
254 |
|
</note> |
255 |
|
|
256 |
<impo>Any service in a <e>NEED</e> line will get started even if it is NOT added to the current or |
<impo>Enhver ydelse i en <e>NEED</e> linie vil blive startet også |
257 |
|
selvom den IKKE er tilføjet to den nuværende eller |
258 |
<e>"boot"</e> runlevel.</impo> |
<e>"boot"</e> runlevel.</impo> |
259 |
|
|
260 |
<e>NEED</e> is thus a "strong" dependency. |
<e>NEED</e> er derfor en "stærk" afhængighed. |
261 |
</p> |
</p> |
262 |
|
|
263 |
</body> |
</body> |
264 |
</section> |
</section> |
265 |
|
|
266 |
<section> |
<section> |
267 |
<title>The USE dependency type</title> |
<title>USE afhængighedstypen</title> |
268 |
<body> |
<body> |
269 |
|
|
270 |
<p>The service is not critical for starting the current service, but should be started before |
<p>Ydelsen er ikke kritisk for opstarten af den nuværende ydelse, men |
271 |
the current if it is used. |
bør startes inden den nuværende bliver brugt. |
272 |
</p> |
</p> |
273 |
|
|
274 |
<pre caption="adding portmap as a USE dependency to netmount"> |
<pre caption="at tilføje portmap som en USE afhængighed til netmount"> |
275 |
depend() { |
depend() { |
276 |
use portmap |
use portmap |
277 |
} |
} |
278 |
</pre> |
</pre> |
279 |
|
|
280 |
<p>Netmount by default can handle NFS mounts, but will only depend on portmap if it is added |
<p>Netmount kan som standard klare NFS mountning, men er kun afhængig |
281 |
to the current or boot runlevel. Any user with NFS mounts should by default add portmap to the |
af portmap hvis den bliver tilføjet til den nuværende eller boot |
282 |
default runlevel, causing netmount to see portmap as a USE dependency and starting that before itself. |
runlevel'en. Enhver bruger med en eller flere NFS mount bør som |
283 |
|
standard tilføje portmap til default runlevel'en, og derved få |
284 |
|
netmount til at se portmap som en USE afhængighed og starte den før |
285 |
|
sig selv. |
286 |
</p> |
</p> |
287 |
|
|
288 |
<p> |
<p> |
289 |
<impo>Any service in the <e>USE</e> line <e>*must*</e> be added to the current or boot runlevels to be |
<impo>Enhver ydelse i <e>USE</e> linien <e>*skal</e> være tilføjet til |
290 |
considered a valid <e>USE</e> dependency.</impo> |
den nuvernde eller boot runlevel for at blive betragtet som en gyldig |
291 |
|
<e>USE</e> afhængighed.</impo> |
292 |
|
|
293 |
<e>USE</e> is thus a "weak" dependency. |
<e>USE</e> er derfor en "svag" afhængighed. |
294 |
</p> |
</p> |
295 |
|
|
296 |
<p> |
<p> |
297 |
<note>If any service in a <e>USE</e> line fails to start, the current service will still start, |
<note>Hvis en vilkårlig ydelse i en <e>USE</e> linie ikke starter, så |
298 |
as the service in the <e>USE</e> line should not be critical for startup.</note> |
starter den nuværende ydelse stadig, idet at ydelsen i <e>USE</e> |
299 |
|
linien ikke er kritisk for opstarten.</note> |
300 |
</p> |
</p> |
301 |
|
|
302 |
</body> |
</body> |
304 |
</chapter> |
</chapter> |
305 |
|
|
306 |
<chapter> |
<chapter> |
307 |
<title>Controlling order without dependency</title> |
<title>At kontrollere opstartsrækkefølgen uden afhængigheder</title> |
308 |
<section> |
<section> |
309 |
<body> |
<body> |
310 |
|
|
311 |
<p>If no dependency relationship exists between two services, but it is necessary or desirable to |
<p>Hvis der ikke eksisterer noget afhængigheds forhold mellem to |
312 |
explicitly start one service after another one, the <e>AFTER</e> and <e>BEFORE</e> relationships can be used. |
ydelser, men det stadig er nødvendigt eller ønskeligt eksplisit at |
313 |
|
starte en ydelse efter en anden, kan man bruge <e>AFTER</e> og |
314 |
|
<e>BEFORE</e> forholdene. |
315 |
|
|
316 |
<note>These two types are only valid during a runlevel change.</note> |
<note>Disse to typer er kun gyldige under et runlevel skift.</note> |
317 |
</p> |
</p> |
318 |
|
|
319 |
<p>Optionally these two can support the "*" glob for including all other services: |
<p>Disse to kan som en mulighed understøtte "*" globben for at |
320 |
|
inkludere alle andre ydelser: |
321 |
</p> |
</p> |
322 |
|
|
323 |
<pre caption="a glob example for AFTER"> |
<pre caption="et glob eksempel med AFTER"> |
324 |
depend() { |
depend() { |
325 |
after * |
after * |
326 |
} |
} |
327 |
</pre> |
</pre> |
328 |
|
|
329 |
<p>This will cause local to start <e>*after*</e> all other services. |
<p>Dette vil medføre at local starter <e>*efter*</e> alle andre ydelser. |
330 |
</p> |
</p> |
331 |
|
|
332 |
</body> |
</body> |
333 |
</section> |
</section> |
334 |
|
|
335 |
<section> |
<section> |
336 |
<title>The BEFORE order type</title> |
<title>BEFORE rækkefølge typen</title> |
337 |
<body> |
<body> |
338 |
|
|
339 |
<p>The current service gets started <e>*before*</e> those listed in the <e>BEFORE</e> line. |
<p>Den nuværende ydelse bliver startet <e>*før*</e> de ydelser der er |
340 |
|
listet i <e>BEFORE</e> linien. |
341 |
</p> |
</p> |
342 |
|
|
343 |
<pre caption="let foo start before bar (snippit of foo)"> |
<pre caption="lad foo starte før bar (et udsnit af foo)"> |
344 |
depend() { |
depend() { |
345 |
before bar |
before bar |
346 |
} |
} |
350 |
</section> |
</section> |
351 |
|
|
352 |
<section> |
<section> |
353 |
<title>The AFTER order type</title> |
<title>AFTER rækkefølge typen</title> |
354 |
<body> |
<body> |
355 |
|
|
356 |
<p>The current service gets started <e>*after*</e> those listed in the <e>AFTER</e> line. |
<p>Den nuværende ydelse bliver startet <e>*efter*</e> dem der er |
357 |
|
listet i <e>AFTER</e> linien. |
358 |
</p> |
</p> |
359 |
|
|
360 |
<pre caption="let bar start after foo (snippit of bar)"> |
<pre caption="lad bar starte efter foo (et udsnit af bar)"> |
361 |
depend() { |
depend() { |
362 |
after foo |
after foo |
363 |
} |
} |
368 |
</chapter> |
</chapter> |
369 |
|
|
370 |
<chapter> |
<chapter> |
371 |
<title>Virtual services</title> |
<title>Virtuelle ydelser</title> |
372 |
<section> |
<section> |
373 |
<body> |
<body> |
374 |
|
|
375 |
<p>Services like most things in the unix world today, come in many flavours and colours. |
<p>Ydelser kommer, som de fleste ting i unix verdnen i dag, med mange |
376 |
It is usually the choice of the user/administrator that determine which is used. |
forskellig farve og smag. Det er som regel op til |
377 |
|
brugeren/administratoren af vælge hvilken en der bliver brugt. |
378 |
</p> |
</p> |
379 |
|
|
380 |
<p>System loggers are one example. As of this writing, Gentoo Linux users have a choice of four |
<p>System loggere er et eksampel. Da dette blev skrevet havde Gentoo |
381 |
different ones. All services that need a system logger running before startup, cannot now <e>NEED</e> |
Linux brugere fire forskellige at vælge imellem. Alle ydelser der har |
382 |
all four of them. To <e>USE</e> them is also too weak. |
brug for at en system logger kører før opstart kan nu ikke <e>NEED</e> |
383 |
|
alle fire. At <e>USE</e> dem er også for svagt. |
384 |
</p> |
</p> |
385 |
|
|
386 |
<p>This is where virtual services and the <e>PROVIDE</e> type comes into play. |
<p>Dette er hvor virtuelle ydelser og <e>PROVIDE</e> typen kommer ind |
387 |
|
i sammenhængen. |
388 |
</p> |
</p> |
389 |
|
|
390 |
</body> |
</body> |
391 |
</section> |
</section> |
392 |
|
|
393 |
<section> |
<section> |
394 |
<title>The PROVIDE type</title> |
<title>PROVIDE typen</title> |
395 |
<body> |
<body> |
396 |
|
|
397 |
<p>The <e>PROVIDE</e> type defines a virtual service that other services can <e>NEED</e> or <e>USE</e>. |
<p><e>PROVIDE</e> typen definerer en virtuel ydelser, som andre |
398 |
|
ydelser kan <e>NEED</e> eller <e>USE</e>. |
399 |
</p> |
</p> |
400 |
|
|
401 |
<pre caption="sysklogd providing logger"> |
<pre caption="sysklogd provid'er logger"> |
402 |
depend() { |
depend() { |
403 |
provide logger |
provide logger |
404 |
} |
} |
408 |
</section> |
</section> |
409 |
|
|
410 |
<section> |
<section> |
411 |
<title>The LOGGER virtual service</title> |
<title>LOGGER, den virtuelle ydelse</title> |
412 |
<body> |
<body> |
413 |
|
|
414 |
<p><e>LOGGER</e> is a predefined virtual service which is provided by all the system loggers. |
<p><e>LOGGER</e> er en prædefineret virtuel ydelse, som bliver |
415 |
It can be used with either the <e>NEED</e> or <e>USE</e> dependency types. |
providet af alle system loggerne. Den kan bruges med enten <e>NEED</e> eller <e>USE</e> afhængigheds typerne. |
416 |
</p> |
</p> |
417 |
|
|
418 |
</body> |
</body> |
419 |
</section> |
</section> |
420 |
|
|
421 |
<section> |
<section> |
422 |
<title>The NET virtual service</title> |
<title>NET, den virtuelle ydelse</title> |
423 |
<body> |
<body> |
424 |
|
|
425 |
<p>The <e>NET</e> service is another virtual service, but unlike <e>LOGGER</e>, it does not |
<p><e>NET</e> ydelsen er en anden virtuel ydelse, men ikke ligesom |
426 |
explicitly <e>PROVIDE</e> a service. |
<e>LOGGER</e>, den <e>PROVIDER</e> ikke en anden ydelse. |
427 |
</p> |
</p> |
428 |
|
|
429 |
<p> |
<p> |
430 |
<impo>To provide the <e>NET</e> virtual, a service must: |
<impo>For at provide <e>NET</e> den virtuelle ydelse, skal en ydelse: |
431 |
<ul> |
<ul> |
432 |
<li>Be added to the current or boot runlevel.</li> |
<li>Være tilføjet til den nuværende eller boot runlevel'en</li> |
433 |
<li>Have "net." pre-pended.</li> |
<li>Have "net." overstået.</li> |
434 |
<li>The part after "net." must be the name of the actual network |
<li>Den del efter "net." skal være navngivet efter det |
435 |
interface (net.eth0 or net.ppp1 for example).</li> |
faktiske netværk interface (net.eth0 eller net.ppp1 eksempelvis).</li> |
436 |
</ul> |
</ul> |
437 |
</impo> |
</impo> |
438 |
</p> |
</p> |
439 |
|
|
440 |
<p>For any valid net.* service, $IFACE will be set to the name of the network interface |
<p>For at enhver gyldig net.* ydelse vil $IFACE blive navnet på |
441 |
("eth0" for net.eth0 for example). |
netværk interfacet |
442 |
|
("eth0" for net.eth0 som eksempel). |
443 |
</p> |
</p> |
444 |
|
|
445 |
</body> |
</body> |
447 |
</chapter> |
</chapter> |
448 |
|
|
449 |
<chapter> |
<chapter> |
450 |
<title>Default command line options</title> |
<title>Standard kommandolinie muligheder</title> |
451 |
<section> |
<section> |
452 |
<body> |
<body> |
453 |
|
|
454 |
<p>Any service can be called with any of the default options. All of those mentioned, |
<p>Enhver ydelse kan bliver kaldt med enhver af de standard muligheder |
455 |
is already defined, except <e>START</e> and <e>STOP</e>, which the user should define |
der er. Alle dem der nævnes er allerede defineret, bortset fra |
456 |
as functions in his rc-script. |
<e>START</e> og <e>STOP</e>, som brugeren bør definere som funktioner |
457 |
|
i hans rc-script. |
458 |
|
|
459 |
<impo>The <e>start()</e> function <e>must</e> be defined.</impo> |
<impo><e>start()</e> funktionen <e>skal</e> være defineret.</impo> |
460 |
<note>The <e>stop()</e> function is less important, and can be left out.</note> |
<note><e>stop()</e> funktionen er mindre vigtig og kan udelades.</note> |
461 |
</p> |
</p> |
462 |
|
|
463 |
<p> |
<p> |
464 |
<note>In general, the user will only define <e>start()</e>,<e>stop()</e> and |
<note>Generelt definerer brugeren kun <e>start()</e>,<e>stop()</e> og |
465 |
<e>restart()</e>. The rest is internal, and should be left alone.</note> |
<e>restart()</e>. Resten er internt og bør ikke bruges.</note> |
466 |
</p> |
</p> |
467 |
|
|
468 |
<pre caption="start the httpd service"> |
<pre caption="at starte httpd ydelsen"> |
469 |
# <c>/etc/init.d/httpd start</c> |
# <c>/etc/init.d/httpd start</c> |
470 |
</pre> |
</pre> |
471 |
|
|
472 |
<p> |
<p> |
473 |
<note>Command line options can be stacked.</note> |
<note>Kommandolinie muligheder kan blive sat i rækkefølge.</note> |
474 |
</p> |
</p> |
475 |
|
|
476 |
<pre caption="pause/start net.eth0"> |
<pre caption="pause/start net.eth0"> |
481 |
</section> |
</section> |
482 |
|
|
483 |
<section> |
<section> |
484 |
<title>The START/STOP option</title> |
<title>START/STOP muligheden</title> |
485 |
<body> |
<body> |
486 |
|
|
487 |
<p><e>START</e> the service including any service that it depends on. |
<p><e>START</e> ydelsen inklusivr enhver ydelse som den afhænger af. |
488 |
</p> |
</p> |
489 |
|
|
490 |
<p><e>STOP</e> the service including any service that depends on it. |
<p><e>STOP</e> ydelsen inklusiv enhver ydelse som den afhænger af.. |
491 |
</p> |
</p> |
492 |
|
|
493 |
</body> |
</body> |
494 |
</section> |
</section> |
495 |
|
|
496 |
<section> |
<section> |
497 |
<title>The RESTART option</title> |
<title>RESTART muligheden</title> |
498 |
<body> |
<body> |
499 |
|
|
500 |
<p>The service must be started for <e>RESTART</e> to work. |
<p>Ydelsen skal være startet for at <e>RESTART</e> virker. |
501 |
It will restart the service as well as all the services that depend on it. |
Den vil genstarte ydelsen sammen med alle de ydelser den er afhængige |
502 |
|
af den. |
503 |
|
|
504 |
<impo>If a custom <e>restart()</e> function is defined, the user should use <e>"svc_start()"</e> |
<impo>Hvis en skræddersyet <e>restart()</e> funktion er defineret, så |
505 |
and <e>"svc_stop()"</e> to start and stop the service.</impo> |
bør brugeren bruge <e>"svc_start()"</e> |
506 |
|
og <e>"svc_stop()"</e> for at starte og stoppe denne ydelse.</impo> |
507 |
|
|
508 |
<note>This is done to correctly handle all the dependent services.</note> |
<note>Dette bliver gjort for at håndtere alle afhængige ydelser korrekt.</note> |
509 |
</p> |
</p> |
510 |
|
|
511 |
</body> |
</body> |
512 |
</section> |
</section> |
513 |
|
|
514 |
<section> |
<section> |
515 |
<title>The PAUSE option</title> |
<title>PAUSE muligheden</title> |
516 |
<body> |
<body> |
517 |
|
|
518 |
<p>This will stop the service, but unlike <e>STOP</e>, no dependent services will be stopped. |
<p>Dette vil stoppe denne ydelse, men til forskel fra <e>STOP</e>, vil |
519 |
|
ingen af de afhængige ydelser blive stoppet. |
520 |
</p> |
</p> |
521 |
|
|
522 |
</body> |
</body> |
523 |
</section> |
</section> |
524 |
|
|
525 |
<section> |
<section> |
526 |
<title>The ZAP option</title> |
<title>ZAP muligheden</title> |
527 |
<body> |
<body> |
528 |
|
|
529 |
<p>Resets the status of the service to stopped. |
<p>Resetter statusen på ydelsen til stoppet. |
530 |
|
|
531 |
<note>Note that none of the commands in the <e>stop()</e> function are executed. |
<note>Bemærk at ingen af kommandoerne i <e>stop()</e> funktionen |
532 |
The user should thus do any needed cleanup.</note> |
bliver eksekveret. Brugeren bør derfor lave en nødvendig oprydning.</note> |
533 |
</p> |
</p> |
534 |
|
|
535 |
</body> |
</body> |
536 |
</section> |
</section> |
537 |
|
|
538 |
<section> |
<section> |
539 |
<title>The INEED/NEEDSME options</title> |
<title>INEED/NEEDSME mulighederne</title> |
540 |
<body> |
<body> |
541 |
|
|
542 |
<p><e>INEED</e> lists the services that this service <e>NEED</e>s. |
<p><e>INEED</e> lister de ydelser som denne ydelse <e>NEED</e>s (kræver). |
543 |
</p> |
</p> |
544 |
|
|
545 |
<p><e>NEEDSME</e> lists the services that <e>NEED</e> this service. |
<p><e>NEEDSME</e> lister de ydelser som <e>NEED</e>(kræver) denne ydelse. |
546 |
</p> |
</p> |
547 |
|
|
548 |
</body> |
</body> |
549 |
</section> |
</section> |
550 |
|
|
551 |
<section> |
<section> |
552 |
<title>The IUSE/USESME options</title> |
<title>IUSE/USESME mulighederne</title> |
553 |
<body> |
<body> |
554 |
|
|
555 |
<p><e>IUSE</e> lists the services that this service <e>USE</e>s. |
<p><e>IUSE</e> lister de ydelser som denne ydelse <e>USE</e>s (bruger). |
556 |
</p> |
</p> |
557 |
|
|
558 |
<p><e>USESME</e> lists the services that <e>USE</e> this service. |
<p><e>USESME</e> lister de ydelser som <e>USE</e> (bruger) denne ydelse. |
559 |
</p> |
</p> |
560 |
|
|
561 |
</body> |
</body> |
562 |
</section> |
</section> |
563 |
|
|
564 |
<section> |
<section> |
565 |
<title>The BROKEN option</title> |
<title>BROKEN muligheden</title> |
566 |
<body> |
<body> |
567 |
|
|
568 |
<p>This lists the missing services (if any) that this service <e>NEED</e>s. |
<p>Denne lister de manglende ydelser (hvis der er nogen) som denne |
569 |
|
ydelse <e>NEED</e>s (kræver). |
570 |
</p> |
</p> |
571 |
|
|
572 |
</body> |
</body> |
574 |
</chapter> |
</chapter> |
575 |
|
|
576 |
<chapter> |
<chapter> |
577 |
<title>Adding custom command line options</title> |
<title>At tilføje skræddersyede kommandolinie muligheder</title> |
578 |
<section> |
<section> |
579 |
<body> |
<body> |
580 |
|
|
581 |
<p>It is relatively easy to add custom command line options. A function with the option name |
<p>Det er relativt nemt at tilføje skræddersyede kommandolinie |
582 |
needs to be defined in the rc-script, and added to the <e>$opts</e> variable, as shown below. |
muligheder. En funktion med mulighedens navn skal være defineret i |
583 |
|
rc-scriptet og være tilføjet til <e>$opts</e> variablen som det er |
584 |
|
vist nedenfor. |
585 |
</p> |
</p> |
586 |
|
|
587 |
<pre caption="foo as a custom option"> |
<pre caption="foo som en skræddersyet mulighed"> |
588 |
opts="${opts} foo" |
opts="${opts} foo" |
589 |
|
|
590 |
foo() { |
foo() { |
597 |
</chapter> |
</chapter> |
598 |
|
|
599 |
<chapter> |
<chapter> |
600 |
<title>Configuration</title> |
<title>Konfiguration</title> |
601 |
<section> |
<section> |
602 |
<body> |
<body> |
603 |
|
|
604 |
<p>Configuration should generally be done via environment variables. These, however, |
<p>Konfiguration bør generelt blive gjort via miljø variable. Disse |
605 |
should not be defined in the rc-script, but in one of three possible configuration files. |
bør derimod ikke blive defineret i rc-scriptet, men i en af tre mulige |
606 |
|
konfigurationsfiler. |
607 |
</p> |
</p> |
608 |
|
|
609 |
<p>One that is specific to the rc-script, and two global configuration files: |
<p>En der er specifik for rc-scriptet og to globale konfiguration filer: |
610 |
</p> |
</p> |
611 |
|
|
612 |
<pre caption="config files for rc-scripts"> |
<pre caption="konfiguration filer for rc-script"> |
613 |
<path>/etc/conf.d/<name of rc-script></path> |
<path>/etc/conf.d/<name of rc-script></path> |
614 |
<path>/etc/conf.d/basic</path> |
<path>/etc/conf.d/basic</path> |
615 |
<path>/etc/rc.conf</path> |
<path>/etc/rc.conf</path> |
616 |
</pre> |
</pre> |
617 |
|
|
618 |
<p> |
<p> |
619 |
<note>These three configuration files get sourced automatically in the order listed.</note> |
<note>Disse tre konfigurationsfiler bliver automatisk "kodet" i den |
620 |
|
nævnte rækkefølge.</note> |
621 |
|
|
622 |
<impo>All <e>NET</e> services also source <path>/etc/conf.d/net</path></impo> |
<impo>Alle <e>NET</e> ydelser "koder" også <path>/etc/conf.d/net</path></impo> |
623 |
|
<!-- source er oversat til kode, det er langt fra optimalt --> |
624 |
</p> |
</p> |
625 |
|
|
626 |
</body> |
</body> |
631 |
<title>Værktøjer/hjælpescript</title> |
<title>Værktøjer/hjælpescript</title> |
632 |
|
|
633 |
<section> |
<section> |
634 |
<title>The rc-update utility</title> |
<title>Rc-update værktøjet</title> |
635 |
<body> |
<body> |
636 |
|
|
637 |
<p>rc-update is the primary tool for adding and removing services to and from a runlevel. |
<p>rc-update er det primære værktøj til at tilføje og fjerne ydelser |
638 |
It will also call "depscan.sh" to update the dependency cache. |
til og fra en runlevel. Den kalder også "depscan.sh" for at |
639 |
|
opdatere afhængigheds cachen. |
640 |
</p> |
</p> |
641 |
|
|
642 |
<pre caption="add metalog to the default runlevel"> |
<pre caption="tilføj metalog til default runlevel'en"> |
643 |
# <c>rc-update add metalog default</c> |
# <c>rc-update add metalog default</c> |
644 |
</pre> |
</pre> |
645 |
|
|
646 |
<pre caption="remove metalog from the default runlevel"> |
<pre caption="fjern metalog fra default runlevel'en"> |
647 |
# <c>rc-update del metalog default</c> |
# <c>rc-update del metalog default</c> |
648 |
</pre> |
</pre> |
649 |
|
|
650 |
<p> |
<p> |
651 |
<note>Running rc-update without arguments should give more help.</note> |
<note>At køre rc-update uden argumenter giver mere hjælp.</note> |
652 |
</p> |
</p> |
653 |
|
|
654 |
</body> |
</body> |
655 |
</section> |
</section> |
656 |
|
|
657 |
<section> |
<section> |
658 |
<title>Hjælpe scriptet depscan.sh</title> |
<title>Hjælpescriptet depscan.sh</title> |
659 |
<body> |
<body> |
660 |
|
|
661 |
<p>For at have alle aspekter med nævner vi lige depscan.sh her. Det |
<p>For at have alle aspekter med nævner vi lige depscan.sh her. Det |