Posts mit dem Label Unix werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Unix werden angezeigt. Alle Posts anzeigen

2018-11-07

MacOS file system check

To see if you new APFS file system is consistent,  you can:

$ sudo fsck_apfs -ln /dev/disk1s1

Let me explain this in details:

  • sudo - assume admin rights
  • fsck_apfs - the low level program to check an APFS file system
  • -ln - scan this in "live mode" and do "no changes"
  • /dev/disk1s1 - the name of your main disk. You can find this by either doing a "df ~" or "diskutil list". The later gives the following output on my system:


$ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +500.0 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            478.9 GB   disk1s1
   2:                APFS Volume Preboot                 47.5 MB    disk1s2
   3:                APFS Volume Recovery                512.8 MB   disk1s3
   4:                APFS Volume VM                      1.1 GB     disk1s4

 If this tells you that you should repair your disk, you must boot your Mac into single user mode (console mode). To do this, reboot and press CMD+S during reboot. You will get a unix console with a root prompt.

here you can run

# fsck_apfs -y /dev/disk1s1

-y means here: repair without asking

2014-05-20

MacOS start scripte

Für einen Unix Benutzer gibt es unter MacOS viele ungewohnte Dinge, zum Beispiel start scripte. Das wird auf MacOS alles vom launchd übernommen.

Hier mal zur Dokumentation ein Beispiel, wie man ein Programm zur boot Zeit als root ausführen lassen kann.

Mein konkretes Problem: Ich benutze tinc als Lösung, um alle meine Rechner via VPN zu verbinden. Ich würde gerne zur Boot Zeit folgendes Kommando ausführen

/usr/local/sbin/tincd  -n dziadzka.net
Unter MacOS erstelllt man hierzu eine plist Datei im XML format und kopiert sie nach /Library/LaunchDaemons.

Konkret lege ich eine Datei /Library/LaunchDaemons/net.dziadzka.tincd.plist mit dem folgende Inhalt

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>net.dziadzka.tincd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/sbin/tincd</string>
        <string>-n</string>
        <string>dziadzka.net</string>
        <string>-D</string>
    </array>
</dict>
</plist>
Im wesentlichen ist das eine 3-elementige property liste mit den werten

Label: net.dziadzka.tincd
KeepAlive: true
ProgrammArguments: ["/usr/local/sbin/tincd", "-n", "dziadzka.net", "-D"]

KeepAlive == true heist, dass sich der Launchd darum kümmert, das Programm nach unfreiwilliger beendigung neu zu starten. Deswegen auch das zusätzliche Argument "-D" für den tincd, damit der sich nicht in den Hintergrund verabschiedet.









2013-08-05

Wie mache ich aus Bildern einen Film

Wir haben auf der OHM2013 mit 'ner Webcam unser Village aufgenommen. Jede Sekunde ein Bild. Das Resultat sind ~300000 Einzelbilder.

Nun wollte ich aus diesen Einzelbildern einen kleinen Zeitrafferfilm machen.

ffmpeg scheint da das Tool der Wahl zu sein, und schnell wurden auch dir richtigen Optionen gefunden.


$ ffmpeg -pattern_type glob -i '20130801*.jpg' day2.mp4

Leider stieg das nach ein paar Minuten mit der Fehlermeldung

20130801*.jpg: Input/output error

aus. Sehr hilfreich. Not.

Stellte sich nach etwas suchen heraus, das wir einige leere Files unter den Bildern hatten.

Ein

$ find . -name \*.jpg -size 0 | xargs rm

hat geholfen.




2011-02-03

vi - das unbekannte Wesen

Ich benutze unter Unix vi (heutzutage als vim) als einzigen Editor für alles -- und das seit mehr 20 Jahren. Trotzdem (oder grade desshalb) gibt es Ecken im vi, die ich mir noch nie so richtig angesehen haben.

Irgendwann bin ich mal über autocmd gestolpert. autocmd oder 'automatic commands' dienen dazu, bestimmte Kommandos automatisch auszuführen.

Einfache Anwendungen dafür sind
autocmd BufReadPost,FileReadPost Makefile set noexpandtab
wenn ich ein Makefile bearbeite, dann hätte ich gerne richtige Tabs, oder
autocmd BufWritePre *.py :%s/\s\+$//e
wenn ich ein .py file schreibe, dann möchte ich keine Leerzeichen am Zeilenende haben.

Soweit, sogut.

Was aber daran wirklich toll ist, findet sich in der Dokumentation zu autocmd - ein Beispiel, wie man ein gzip Komprimiertes File editieren kann, welches beim lese automatisch ausgepackt und beim schreiben wieder gepackt wird.

Das kann man auch für sinvolleres benutzen, und so finden sich seit ein paar Jahren folgende Zeilen - dich ich irgendwoher aus dem Netz habe - in meiner .vimrc:


augroup encrypted
:au!
" First make sure nothing is written to ~/.viminfo
" while editing an encrypted file.
au BufReadPre,FileReadPre      *.gpg set viminfo=
" We don't want a swap file, as it writes unencrypted data to disk
au BufReadPre,FileReadPre      *.gpg set noswapfile
" Switch to binary mode to read the encrypted file
au BufReadPre,FileReadPre      *.gpg set bin
au BufReadPre,FileReadPre      *.gpg let ch_save = &ch|set ch=2
au BufReadPost,FileReadPost    *.gpg '[,']!gpg --decrypt 2> /dev/null
" Switch to normal mode for editing
au BufReadPost,FileReadPost    *.gpg set nobin
au BufReadPost,FileReadPost    *.gpg let &ch = ch_save|unlet ch_save
au BufReadPost,FileReadPost    *.gpg execute ":doautocmd BufReadPost " . expand("%:r")
" Convert all text to encrypted text before writing
au BufWritePre,FileWritePre    *.gpg   '[,']!gpg --default-key KEYID --default-recipient-self -ae 2>/dev/null
" Undo the encryption so we are back in the normal text, directly
" after the file has been written.
au BufWritePost,FileWritePost    *.gpg   u  
augroup END


Als KEYID ist hier die ID des PGP Keys anzugeben. Einfaches Lesen und schreiben von mit PGP verschlüsselten Textdateien.

$ vi foo.gpg
... editiere foo ....
$ cat foo.gpg
-----BEGIN PGP MESSAGE----- hQQOAx86mItHGziREBAA0EzP6msleRqcYS/2KLmMgNHEn9EukJOSgPahHJtE8Ni5

2003-11-01

Buch: The Art of Unix Programming



The Art of Unix Programming


Ein wunderbares Buch. Ein must read für jeden Unix Liebhaber! 

Raymond beschreibt hier die Philosophie hinter Unix an vielen Beispielen. Das Buch liegt irgendwo zwischen Saulus: A Quarter Century of UNIX und Kernighan+Pike: The Practice of Programming

Für mich ein klarer Anwärter für das beste Buch des Jahres.