# Start/stop Script erweitern?

## deranonyme

Hallo

Ich habe mir in /etc/conf.d/local.stop folgende Zeile eingefügt:

```
rm -r /var/tmp/portage/*

```

Diese erzeugt allerdings immer eine Fehlermeldung, wenn das Verzeichnis leer ist. Wie kann ich das besser regeln?

Danke Frank

----------

## Genone

Mit -f als Option for rm.

----------

## schachti

Was heißt für Dich "besser regeln"? Lediglich die Fehlermeldung verstecken? Das geht mit

```

rm -r /var/tmp/portage/* 2>/dev/null

```

Oder den Befehl nur ausführen, wenn das Verzeichnis nicht leer ist?

----------

## deranonyme

 *schachti wrote:*   

> Was heißt für Dich "besser regeln"? Lediglich die Fehlermeldung verstecken? Das geht mit
> 
> ```
> 
> rm -r /var/tmp/portage/* 2>/dev/null
> ...

 

Nö, schon den Befehl nur ausführen, wenn das Verzeichnis nicht leer ist. Verstecken ist dirty   :Wink: 

Frank

----------

## schachti

quick'n'dirty:

```

if [[ `ls -lA /var/tmp/portage/ 2>/dev/null | wc -l` -ge 2 ]]; then

  rm -r /var/tmp/portage/*

fi

```

tested, ob /var/tmp/portage/ mindestens einen Eintrag (außer . und ..) enthält - falls ja, wird rm ausgeführt.

----------

## Genone

 *man rm wrote:*   

>        -f, --force
> 
>               ignore nonexistent files, never prompt

 

----------

## schachti

Das macht aber nur dann Sinn, wenn man nicht gefragt werden will, ob man sich sicher ist.   :Wink: 

----------

## Genone

 *schachti wrote:*   

> Das macht aber nur dann Sinn, wenn man nicht gefragt werden will, ob man sich sicher ist.  

 

Das sollte in einem Initskript eher selten der Fall sein   :Wink: 

----------

## 69719

Für Schachti: es geht auch einfacher  :Smile: 

```

test -e /var/tmp/portage/* && rm -r /var/tmp/portage

```

----------

## Anarcho

 *Genone wrote:*   

>  *schachti wrote:*   Das macht aber nur dann Sinn, wenn man nicht gefragt werden will, ob man sich sicher ist.   
> 
> Das sollte in einem Initskript eher selten der Fall sein  

 

Wie gut das dir die Leute zuhören   :Twisted Evil: 

```
maz@ts ~ $ rm -r leerer_ordner/*

rm: cannot remove `leerer_ordner/*': No such file or directory

maz@ts ~ $ rm -rf leerer_ordner/*

maz@ts ~ $
```

----------

## 69719

 *Anarcho wrote:*   

>  *Genone wrote:*    *schachti wrote:*   Das macht aber nur dann Sinn, wenn man nicht gefragt werden will, ob man sich sicher ist.   
> 
> Das sollte in einem Initskript eher selten der Fall sein   
> 
> Wie gut das dir die Leute zuhören  
> ...

 

Wurde doch schon mitm 2. Post gelöst, nur ist die Diskussion nen bissel ausgebrochen.

----------

## schachti

 *escor wrote:*   

> Für Schachti: es geht auch einfacher 
> 
> ```
> 
> test -e /var/tmp/portage/* && rm -r /var/tmp/portage
> ...

 

Danke, sowas hatte ich in der man page von test gesucht - ich habe schlichtweg nicht geglaubt, dass es mit dem * funktioniert.   :Wink: 

----------

## Anarcho

 *escor wrote:*   

>  *Anarcho wrote:*    *Genone wrote:*    *schachti wrote:*   Das macht aber nur dann Sinn, wenn man nicht gefragt werden will, ob man sich sicher ist.   
> 
> Das sollte in einem Initskript eher selten der Fall sein   
> 
> Wie gut das dir die Leute zuhören  
> ...

 

Das weiss ich sehr wohl, daher schrieb ich auch. Hat ja anscheinend keiner begriffen.

----------

## deranonyme

Danke, habe ich erst mal so eingetragen. Denke es wird dann auch funktionieren.

Frank

----------

## mv

 *schachti wrote:*   

> 
> 
> ```
> test -e /var/tmp/portage/* && rm -r /var/tmp/portage
> ```
> ...

 

Es funktioniert ja auch nicht: 

```
:>/var/tmp/portage/1; :>/var/tmp/portage/2; test -e /var/tmp/portage/* && echo geht
```

----------

## mv

Die "richtige" Lösung für das Problem ist übrigens, baselayout-2 zwei zu benutzen und /var/tmp/portage zur Liste der zu löschenden Directories hinzuzufügen.

----------

## deranonyme

 *mv wrote:*   

> Die "richtige" Lösung für das Problem ist übrigens, baselayout-2 zwei zu benutzen und /var/tmp/portage zur Liste der zu löschenden Directories hinzuzufügen.

 

Ich denke das ist später die richtige Lösung, denn noch ist baselayout-2 maskiert. Oder meinst du was anderes?

Frank

----------

## Aldo

Ich würde das so lösen:

```
if [ -d /var/tmp/portage ]; then

 rm -r /var/tmp/portage;

 mkdir /var/tmp/portage;

fi
```

Also erstmal das ganze Verzeichnis löschen, egal ob leer oder nicht und dann ein neues leeres anlegen.

Man kann die Schleife auch weglassen und einfach brutal löschen und neu anlegen.

Dadurch erübrigt sich dann quasi die Abfrage ob es da und/oder leer ist.

----------

## treor

wie wärs mit

mv /var/tmp/portage/* /dev/null ?  :Wink: 

----------

## papahuhn

 *treor wrote:*   

> wie wärs mit
> 
> mv /var/tmp/portage/* /dev/null ? 

 

Mal getestet?

----------

## treor

ne jetzt erst.. hät ich wohl früher mal machen sollen

----------

## mv

 *deranonyme wrote:*   

> Ich denke das ist später die richtige Lösung, denn noch ist baselayout-2 maskiert. Oder meinst du was anderes?

 

baselayout-2 funktioniert schon seit langer Zeit sehr gut (es wäre vermutlich sogar schon stabil, wenn nicht einer der Haupt-Entwickler kurz vor dem geplanten Stabilisierungstermin Gentoo verlassen hätte). Gentoo ist bei der Stabilisierung von neuen baselayouts verständlicherweise immer extrem zurückhaltend, da natürlich ein Nicht-Funktionieren extreme Folgen hat.

----------

