Merge branch 'dev' into vhs
This commit is contained in:
commit
c95ad1076e
51
Makefile
51
Makefile
@ -1,3 +1,6 @@
|
|||||||
|
MAKEFLAGS += -j
|
||||||
|
MAKEFLAGS += -s
|
||||||
|
EDITOR ?= vi
|
||||||
FZF != command -v sk || command -v fzy || command -v fzf || \
|
FZF != command -v sk || command -v fzy || command -v fzf || \
|
||||||
{ echo install a fuzzy finder && exit 1 ;}
|
{ echo install a fuzzy finder && exit 1 ;}
|
||||||
|
|
||||||
@ -8,25 +11,38 @@ help: ## Print the help message
|
|||||||
|
|
||||||
articles != find * -type f -name "*.md"
|
articles != find * -type f -name "*.md"
|
||||||
|
|
||||||
db.rec: $(articles)
|
categories != ls -d */
|
||||||
|
|
||||||
|
databases = $(patsubst %/, .dbs/%.rec, $(categories))
|
||||||
|
|
||||||
|
default += $(databases)
|
||||||
|
|
||||||
|
$(databases): .dbs/%.rec: %/ | .dbs/
|
||||||
|
$(info making $(@F))
|
||||||
|
mkdir -p $(@D)
|
||||||
|
for entry in $(shell find $< -type f -name "*.md") ; do \
|
||||||
|
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
|
||||||
|
sed -e 's/\[ //' -e 's/ \]//' |\
|
||||||
|
tr -d '"' ;\
|
||||||
|
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
|
||||||
|
printf "file: %s\n\n" "$$entry" ;\
|
||||||
|
done >> $@
|
||||||
|
for entry in $(shell find $< -type f -name "*.md"); do \
|
||||||
|
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
||||||
|
done
|
||||||
|
|
||||||
|
db.rec: $(databases)
|
||||||
printf '%s\n' '%rec: guide' > $@
|
printf '%s\n' '%rec: guide' > $@
|
||||||
printf '%s\n' '%type: wordcount int' >> $@
|
printf '%s\n' '%type: wordcount int' >> $@
|
||||||
printf '%s\n\n' '%sort: title' >> $@
|
printf '%s\n\n' '%sort: title' >> $@
|
||||||
for x in $^ ; do \
|
cat $^ >> $@
|
||||||
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$x" |\
|
|
||||||
sed -e 's/\[ //' -e 's/ \]//' |\
|
|
||||||
tr -d '"' ;\
|
|
||||||
printf "file: %s\n\n" "$$x" ;\
|
|
||||||
done >> $@
|
|
||||||
for entry in $^; do \
|
|
||||||
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
|
||||||
done
|
|
||||||
recsel $@ -e "requires != ''" -CR title,requires |\
|
recsel $@ -e "requires != ''" -CR title,requires |\
|
||||||
while read title requires; do \
|
while read title requires; do \
|
||||||
IFS=', ' && for provider in $$requires; do \
|
IFS=', ' && for provider in $$requires; do \
|
||||||
recset $@ -e "title = '$${provider}'" -f provides -a "$${title}" ;\
|
recset $@ -e "title = '$${provider}'" -f provides -a "$${title}" ;\
|
||||||
done ;\
|
done ;\
|
||||||
done
|
done
|
||||||
|
$(info Created main database: $@)
|
||||||
recfix --sort $@
|
recfix --sort $@
|
||||||
|
|
||||||
default += db.rec
|
default += db.rec
|
||||||
@ -41,13 +57,14 @@ database: $(default) ## Make a recfiles database
|
|||||||
|
|
||||||
.PHONY: article
|
.PHONY: article
|
||||||
article: ## Write an article
|
article: ## Write an article
|
||||||
@path=$$(find . -type d -printf '%P\n' | $(FZF)); \
|
@path=$$(find $(categories) -type d | sort | uniq | $(FZF)) ;\
|
||||||
read -p "Title: " title; \
|
read -p "Title: " title ;\
|
||||||
printf '%s\n' '---' >> $$path/$$title.md ; \
|
filename="$$(echo "$$title" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')" ;\
|
||||||
printf 'title: "%s"\n' "$$title" >> $$path/$$title.md ; \
|
printf '%s\n' '---' >> $$path/$$filename.md ;\
|
||||||
printf 'tags: [ "%s" ]\n' "$$path" | sed 's#\/#", "#g' >> $$path/$$title.md ; \
|
printf 'title: "%s"\n' "$$title" >> $$path/$$filename.md ;\
|
||||||
printf '%s\n\n' '---' >> $$path/$$title.md ;\
|
printf 'tags: [ "%s" ]\n' "$$path" | sed 's#\/#", "#g' >> $$path/$$filename.md ;\
|
||||||
$(EDITOR) +5 $$path/$$title.md
|
printf '%s\n\n' '---' >> $$path/$$filename.md ;\
|
||||||
|
$(EDITOR) +5 "$$path/$$filename.md"
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean: ## Remove all generated files
|
clean: ## Remove all generated files
|
||||||
|
14
README.md
14
README.md
@ -8,7 +8,19 @@ The Linux Knowledge-Base provides quick-start guides for working with terminal p
|
|||||||
|
|
||||||
Install `make`, `recutils`, and any fuzzy-finder (i.e. `sk`, `fzy`, or `fzf`).
|
Install `make`, `recutils`, and any fuzzy-finder (i.e. `sk`, `fzy`, or `fzf`).
|
||||||
|
|
||||||
Usage: `make`
|
## Usage
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make
|
||||||
|
make database
|
||||||
|
|
||||||
|
recsel db.rec -q database
|
||||||
|
recsel db.rec -q gpg
|
||||||
|
recsel db.rec -e "title = 'ssh'"
|
||||||
|
recsel db.rec -e "title ~ 'ssh'"
|
||||||
|
recsel db.rec -e "title ~ 'bash'" -R title,wordcount
|
||||||
|
```
|
||||||
|
|
||||||
# Style
|
# Style
|
||||||
|
|
||||||
|
@ -6,7 +6,20 @@ tags: [ "fun" ]
|
|||||||
- `asciiquarium`
|
- `asciiquarium`
|
||||||
- `cbonsai -lim "$(fortune)"`
|
- `cbonsai -lim "$(fortune)"`
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
cow=$(cowsay -l | sort -R | head -1)
|
cow=$(cowsay -l | sort -R | head -1)
|
||||||
fortune -s | figlet | cowsay -nf $cow | lolcat
|
fortune -s | figlet | cowsay -nf $cow | lolcat
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Watch the [Collatz Conjecture](https://en.wikipedia.org/wiki/Collatz_conjecture) collapse:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
x="$(du -sc ~/.cache | tr -d '[:alpha:]' | tail -1)"
|
||||||
|
until [ "$x" -eq "1" ]; do
|
||||||
|
test "$(( x % 2 ))" -eq 0 && x=$(( x / 2 )) || \
|
||||||
|
x=$(( x * 3 + 1 ))
|
||||||
|
clear -x
|
||||||
|
figlet "$x" | lolcat
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
```
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "at"
|
title: "at"
|
||||||
tags: [ "Basics" ]
|
tags: [ "Basics", "time" ]
|
||||||
---
|
---
|
||||||
Install with:
|
Install with:
|
||||||
|
|
||||||
|
@ -342,11 +342,12 @@ apt install $PROGRAM
|
|||||||
|
|
||||||
Remove `lolcat`, because it's useless:
|
Remove `lolcat`, because it's useless:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo apt remove lolcat
|
sudo apt remove lolcat
|
||||||
```
|
```
|
||||||
|
|
||||||
... and that's pretty much it. You can move, create, destroy, install things, and look things up.
|
...and that's pretty much it.
|
||||||
|
You can move, create, destroy, install things, and look things up.
|
||||||
|
|
||||||
# Review
|
# Review
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "clock"
|
title: "clock"
|
||||||
tags: [ "Basics" ]
|
tags: [ "Basics", "time" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Show system time:
|
Show system time:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "cron"
|
title: "cron"
|
||||||
tags: [ "Basics" ]
|
tags: [ "Basics", "time" ]
|
||||||
---
|
---
|
||||||
# Cronie
|
# Cronie
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "locale"
|
title: "locale"
|
||||||
tags: [ "Basics" ]
|
tags: [ "Basics", "time" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Your locale tells the computer your location, preferred time-and-date format, standard language, papersize, et c.
|
Your locale tells the computer your location, preferred time-and-date format, standard language, papersize, et c.
|
||||||
|
@ -6,59 +6,30 @@ tags: [ "Basics" ]
|
|||||||
|
|
||||||
`type` shows what kind of thing you're running, be it an alias, function, or binary program.
|
`type` shows what kind of thing you're running, be it an alias, function, or binary program.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
type cmus
|
type cd
|
||||||
|
type ls
|
||||||
|
type -P ls
|
||||||
|
type -a cat
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
# Whereis the Program
|
# Whereis the Program
|
||||||
|
|
||||||
Ask where the `angband` program is, along with all its configuration files:
|
Where is `grep` and all its configuration files?
|
||||||
|
|
||||||
`whereis angband`
|
```sh
|
||||||
|
whereis grep
|
||||||
Also `which` shows where a binary file (the program) is,
|
|
||||||
|
|
||||||
```bash
|
|
||||||
which cmus
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Search Instantly with `plocate`
|
Which one of these is the binary file which you actually use?
|
||||||
|
|
||||||
You can search every file on the computer instantly by installing `plocate`.
|
```sh
|
||||||
|
which grep
|
||||||
Once installed, run `sudo updatedb` to create the database of (nearly) every file on the computer.
|
|
||||||
|
|
||||||
Check how big the database is:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
du -h /var/lib/plocate/plocate.db
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Once you have the database, you can find nearly any file instantly.
|
# More
|
||||||
|
|
||||||
- Search for gifs: `locate .gif`
|
- [Search instantly with `plocate`](data/search_system.md)
|
||||||
- Search for gifs in the `/usr/` directory: `locate /usr/ .gif`
|
|
||||||
- Search for jpg images with 'dog' or 'Dog' in the name: `locate -i dog jpg`
|
|
||||||
- Search for videos: `plocate --regex '.mp4$|.mkv$|.wmv$|.webm$|.mov$|.avi$'`
|
|
||||||
|
|
||||||
For best results, run `updatedb` regularly, perhaps in [crontab](../system/cron.md).
|
|
||||||
|
|
||||||
## Search More Places
|
|
||||||
|
|
||||||
`plocate` will not search `/tmp/`, because nobody cares about those files, and won't search inside `/mnt/`, because that's where USB sticks get mounted, so the files keep changing as USB sticks come and go.
|
|
||||||
|
|
||||||
Change where `plocate` searches by editing the configuration file at `/etc/updatedb.conf`.
|
|
||||||
|
|
||||||
By default, the `/mnt` directory is 'pruned' from the database.
|
|
||||||
So if you want to search `/mnt` for videos, remove the word `/mnt` from the configuration file.
|
|
||||||
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cat /etc/updatedb.conf
|
|
||||||
sudo sed 's#/mnt/##' /etc/updatedb.conf
|
|
||||||
sudo updatedb
|
|
||||||
plocate --regex '.mp4$|.mkv$|.wmv$|.webm$|.mov$|.avi$'
|
|
||||||
```
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "time"
|
title: "time"
|
||||||
tags: [ "Basics" ]
|
tags: [ "Basics", "time" ]
|
||||||
---
|
---
|
||||||
# systemd
|
# systemd
|
||||||
|
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
---
|
|
||||||
title: "profanity"
|
|
||||||
tags: [ "Chat", "OTR" ]
|
|
||||||
---
|
|
||||||
# otr
|
|
||||||
|
|
||||||
'Off The Record' encryption seems mostly dead to me.
|
|
||||||
But this is what I did, back in the day...
|
|
||||||
|
|
||||||
Install libotr-dev or libotr5-dev or whatever..
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo apt -y install lib5otr-dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Make your otr keys.
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr gen
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can start an otr converstation.
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr start bob@jobbies.org
|
|
||||||
```
|
|
||||||
|
|
||||||
Or if you already have a conversation windows open, switch to our using:
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, verify!
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr question "Who are you?" bob
|
|
||||||
```
|
|
||||||
|
|
||||||
Bob is verified upon the answer, 'bob'.
|
|
||||||
|
|
||||||
### OTR Finger Prints
|
|
||||||
|
|
||||||
Get yours with
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr myfp
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr theirfp
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
/otr myfp
|
|
||||||
```
|
|
||||||
|
|
@ -5,25 +5,25 @@ tags: [ "Chat" ]
|
|||||||
|
|
||||||
See available pastebins:
|
See available pastebins:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wgetpaste -S
|
wgetpaste -S
|
||||||
```
|
```
|
||||||
|
|
||||||
Upload script.sh to bpaste:
|
Upload script.sh to bpaste:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wgetpaste -s bpaste script.sh
|
wgetpaste -s bpaste script.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Input clipboard to dpaste with the heading "Title"
|
Input clipboard to dpaste with the heading "Title"
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wgetpaste -s dpaste -d Title -x
|
wgetpaste -s dpaste -d Title -x
|
||||||
```
|
```
|
||||||
|
|
||||||
Paste in the file then load the result to the right-hand clipboard:
|
Paste in the file then load the result to the right-hand clipboard:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wgetpaste -s dpaste -X
|
wgetpaste -s dpaste -X
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Archives"
|
title: "Archives"
|
||||||
tags: [ "tar", "backups" ]
|
tags: [ "tar", "backups", ".tgz", "tar.gz" ]
|
||||||
---
|
---
|
||||||
# `tar`
|
# `tar`
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "unison"
|
title: "unison"
|
||||||
tags: [ "Backups" ]
|
tags: [ "Backups", "synch" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Install unison on both machines, and make sure both have the same version of unison, with the same version of the ocaml compiler (the smallest difference will cause problems).
|
Install unison on both machines, and make sure both have the same version of unison, with the same version of the ocaml compiler (the smallest difference will cause problems).
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "gpg"
|
title: "gpg"
|
||||||
tags: [ "vim", "data", "GPG" ]
|
tags: [ "vim", "data", "GPG" ]
|
||||||
|
requires: [ "GPG Basics", "vim basics" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
The `vim-gnupg` plugin lets vim edit gpg-encrypted files as if they were unencrypted.
|
The `vim-gnupg` plugin lets vim edit gpg-encrypted files as if they were unencrypted.
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
---
|
---
|
||||||
title: "PDF Metadata Erasure"
|
title: "PDF Metadata Erasure"
|
||||||
tags: [ "Metadata", "Ghost Script" ]
|
tags: [ "Metadata", "Ghost Script", "gs", ".pdf" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
You cannot erase pdf metadata with `exiftool` (it only *appends* your changes).
|
||||||
|
To delete pdf metadata, you'll need `gs`.
|
||||||
|
|
||||||
Make a text file called 'pdfmark.txt'.
|
Make a text file called 'pdfmark.txt'.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "Board Games"
|
title: "Board Games with Recfiles"
|
||||||
tags: [ "data", "recfiles", "games" ]
|
tags: [ "data", "recfiles", "games" ]
|
||||||
|
requires: "Recfiles"
|
||||||
---
|
---
|
||||||
|
|
||||||
You can play with a board games database from boardgamegeek.com.
|
You can play with a board games database from boardgamegeek.com.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "sc-im"
|
title: "sc-im"
|
||||||
tags: [ "TUI", "data" ]
|
tags: [ "TUI", "data", "spreadsheet", ".csv" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
- [Sample file](sc-im/sample.sc)
|
- [Sample file](sc-im/sample.sc)
|
||||||
|
49
data/search_system.md
Normal file
49
data/search_system.md
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
title: "Search System"
|
||||||
|
tags: [ "data", "search", "locate", "plocate" ]
|
||||||
|
requires: "cron"
|
||||||
|
---
|
||||||
|
|
||||||
|
You can search every file on the computer instantly by installing `plocate`.
|
||||||
|
|
||||||
|
Once installed, run `sudo updatedb` to create the database of (nearly) every file on the computer.
|
||||||
|
|
||||||
|
Check how big the database is:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
du -h /var/lib/plocate/plocate.db
|
||||||
|
```
|
||||||
|
|
||||||
|
Once you have the database, you can find nearly any file instantly.
|
||||||
|
|
||||||
|
- Search for gifs: `locate .gif`
|
||||||
|
- Search for gifs in the `/usr/` directory: `locate /usr/ .gif`
|
||||||
|
- Search for jpg images with 'dog' or 'Dog' in the name: `locate -i dog jpg`
|
||||||
|
- Search for videos: `plocate --regex '.mp4$|.mkv$|.wmv$|.webm$|.mov$|.avi$'`
|
||||||
|
|
||||||
|
For best results, run `updatedb` regularly, perhaps in [crontab](../system/cron.md).
|
||||||
|
|
||||||
|
## Search More Places
|
||||||
|
|
||||||
|
`plocate` will not search `/tmp/`, because nobody cares about those files, and won't search inside `/mnt/`, because that's where USB sticks get mounted, so the files keep changing as USB sticks come and go.
|
||||||
|
|
||||||
|
Change where `plocate` searches by editing the configuration file at `/etc/updatedb.conf`.
|
||||||
|
|
||||||
|
By default, the `/mnt` directory is 'pruned' from the database.
|
||||||
|
So if you want to search `/mnt` for videos, remove the word `/mnt` from the configuration file.
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su root
|
||||||
|
cat /etc/updatedb.conf
|
||||||
|
sed -i 's#/mnt/##' /etc/updatedb.conf
|
||||||
|
updatedb
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can search in `/mnt` for films:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
plocate --regex '.mp4$|.mkv$|.wmv$|.webm$|.mov$|.avi$'
|
||||||
|
```
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Soft Serve through https"
|
title: "Soft Serve through https"
|
||||||
tags: [ "data", "git", "lfs" ]
|
tags: [ "data", "git server", "lfs" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
## `http` Setup
|
## `http` Setup
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "timew"
|
title: "timewarrior"
|
||||||
tags: [ "Data" ]
|
tags: [ "Data", "tracking", "time", "timew" ]
|
||||||
---
|
---
|
||||||
# Summaries
|
# Summaries
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ tags: [ "networking", "ssh", "android" ]
|
|||||||
3. Open fdroid, and run:
|
3. Open fdroid, and run:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
pkg upgrade
|
pkg upgrade
|
||||||
pkg install busybox termux-services openssh openssh-sftp-server
|
pkg install busybox termux-services openssh openssh-sftp-server
|
||||||
source $PREFIX/etc/profile.d/start-services.sh
|
source $PREFIX/etc/profile.d/start-services.sh
|
||||||
|
@ -6,19 +6,20 @@ tags: [ "distros" ]
|
|||||||
|
|
||||||
Update font-cache:
|
Update font-cache:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
|
su root
|
||||||
fc-cache
|
fc-cache
|
||||||
```
|
```
|
||||||
|
|
||||||
List fonts:
|
List fonts:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
fc-list
|
fc-list
|
||||||
```
|
```
|
||||||
|
|
||||||
Grab the part of the font name you need for Xresources:
|
Grab the part of the font name you need for Xresources:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
fc-list | cut -d: -f2
|
fc-list | cut -d: -f2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -8,27 +8,27 @@ tags: [ "distros" ]
|
|||||||
|
|
||||||
Messed up a package's configuration files?
|
Messed up a package's configuration files?
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo apt-get purge [thing]
|
sudo apt-get purge [thing]
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo apt autoremove
|
sudo apt autoremove
|
||||||
```
|
```
|
||||||
|
|
||||||
Check if you still have related things:
|
Check if you still have related things:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
apt search [thing]
|
apt search [thing]
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo apt-get install [ thing ]
|
sudo apt-get install [ thing ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Still have problems?
|
Still have problems?
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo dpgk --force-confmiss -i /var/cache/apt/archives/[thing]
|
sudo dpgk --force-confmiss -i /var/cache/apt/archives/[thing]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -4,15 +4,21 @@ tags: [ "Void" ]
|
|||||||
---
|
---
|
||||||
Put your device in 'aeroplane' mode (e.g. where no trace of signal leaves it) by turning off Wi-Fi and blue-tooth.
|
Put your device in 'aeroplane' mode (e.g. where no trace of signal leaves it) by turning off Wi-Fi and blue-tooth.
|
||||||
|
|
||||||
> sudo sv stop wpa_supplicant bluetoothd
|
```sh
|
||||||
|
su root
|
||||||
|
sv stop wpa_supplicant bluetoothd
|
||||||
|
```
|
||||||
|
|
||||||
Find your device's name with `ip a`.
|
Find your device's name with `ip a`.
|
||||||
If unsure, try this:
|
If unsure, try this:
|
||||||
|
|
||||||
> name=$(ip a | grep -Eo 'wlp\w{3}')
|
```sh
|
||||||
|
name=$(ip a | grep -Eo 'wlp\w{3}')
|
||||||
> echo $name
|
echo $name
|
||||||
|
```
|
||||||
|
|
||||||
Then set that device down:
|
Then set that device down:
|
||||||
|
|
||||||
> sudo ip link set $name down
|
```sh
|
||||||
|
ip link set $name down
|
||||||
|
```
|
||||||
|
@ -4,19 +4,19 @@ tags: [ "Void" ]
|
|||||||
---
|
---
|
||||||
Monitor all processes:
|
Monitor all processes:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
extrace
|
extrace
|
||||||
```
|
```
|
||||||
|
|
||||||
Monitor one process:
|
Monitor one process:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
extrace ls
|
extrace ls
|
||||||
```
|
```
|
||||||
|
|
||||||
Monitor a script:
|
Monitor a script:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
./script.sh | extrace
|
./script.sh | extrace
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -9,16 +9,17 @@ Jenkins is janky.
|
|||||||
## Start
|
## Start
|
||||||
Start the service file.
|
Start the service file.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo ln -s /etc/sv/jenkins /var/service
|
su root
|
||||||
sudo sv start jenkins
|
ln -s /etc/sv/jenkins /var/service
|
||||||
|
sv start jenkins
|
||||||
```
|
```
|
||||||
|
|
||||||
Then visit the web interface with `$BROWSER localhost:8080`.
|
Then visit the web interface with `$BROWSER localhost:8080`.
|
||||||
|
|
||||||
If it's not working, try running the command from the run file the first time:
|
If it's not working, try running the command from the run file the first time:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
chpst -u jenkins java -jar /opt/jenkins/jenkins.war
|
chpst -u jenkins java -jar /opt/jenkins/jenkins.war
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -6,13 +6,13 @@ tags: [ "void", "locale" ]
|
|||||||
Check the current locales:
|
Check the current locales:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
locale -a
|
locale -a
|
||||||
```
|
```
|
||||||
|
|
||||||
Add the languages you want by editing `/etc/default/libc-locales`, and uncommenting your choice:
|
Add the languages you want by editing `/etc/default/libc-locales`, and uncommenting your choice:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
#en_DK.UTF-8 UTF-8
|
#en_DK.UTF-8 UTF-8
|
||||||
#en_DK ISO-8859-1
|
#en_DK ISO-8859-1
|
||||||
en_GB.UTF-8 UTF-8
|
en_GB.UTF-8 UTF-8
|
||||||
@ -25,13 +25,14 @@ Now you can generate what you need for those languages.
|
|||||||
However, instead of generating what you need, you're going to generate everything which needs updating:
|
However, instead of generating what you need, you're going to generate everything which needs updating:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo xbps-reconfigure glibc-locales
|
su root
|
||||||
|
xbps-reconfigure glibc-locales
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, select your chosen locale by placing it in `/etc/locale.conf`.
|
Finally, select your chosen locale by placing it in `/etc/locale.conf`.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "LC_ALL=en_GB.UTF-8
|
echo "LC_ALL=en_GB.UTF-8
|
||||||
LANG=en_GB.UTF-8
|
LANG=en_GB.UTF-8
|
||||||
LANGUAGE=en_GB.UTF-8" > /etc/locale.conf
|
LANGUAGE=en_GB.UTF-8" > /etc/locale.conf
|
||||||
@ -48,7 +49,7 @@ en_GB ISO-8859-1
|
|||||||
Check your new locales are available:
|
Check your new locales are available:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
locale -a
|
locale -a
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "brightness"
|
title: "brightness"
|
||||||
tags: [ "hardware" ]
|
tags: [ "hardware", "laptop" ]
|
||||||
---
|
---
|
||||||
# Brightness
|
# Brightness
|
||||||
|
|
||||||
|
@ -4,9 +4,13 @@ tags: [ "hardware" ]
|
|||||||
---
|
---
|
||||||
See screen size
|
See screen size
|
||||||
|
|
||||||
> xrandr -q
|
```sh
|
||||||
|
xrandr -q
|
||||||
|
```
|
||||||
|
|
||||||
Automatically configure:
|
Automatically configure:
|
||||||
|
|
||||||
> xrandr --auto
|
```sh
|
||||||
|
xrandr --auto
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -6,11 +6,11 @@ tags: [ "Sound" ]
|
|||||||
|
|
||||||
Add your user to the audio group, and install `festival-english`.
|
Add your user to the audio group, and install `festival-english`.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "(Parameter.set 'Audio_Method 'Audio_Command)" >> /usr/share/festival/voices.scm
|
echo "(Parameter.set 'Audio_Method 'Audio_Command)" >> /usr/share/festival/voices.scm
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")" /usr/share/festival/voices.scm
|
echo "(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")" /usr/share/festival/voices.scm
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Makefiles"
|
title: "Makefiles"
|
||||||
tags: [ "system", "makefiles" ]
|
tags: [ "system", "make" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
The `make` system wants to know:
|
The `make` system wants to know:
|
||||||
@ -11,7 +11,7 @@ The `make` system wants to know:
|
|||||||
|
|
||||||
Start with a basic test-area.
|
Start with a basic test-area.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
mkdir make_test ; cd $_
|
mkdir make_test ; cd $_
|
||||||
printf "%s:\n" README.md > Makefile
|
printf "%s:\n" README.md > Makefile
|
||||||
printf "\t%s\n" 'echo "Basic makefile example." > $@' >> Makefile
|
printf "\t%s\n" 'echo "Basic makefile example." > $@' >> Makefile
|
||||||
@ -32,8 +32,6 @@ README.md: Makefile
|
|||||||
echo '```' >> $@
|
echo '```' >> $@
|
||||||
cat $< >> $@
|
cat $< >> $@
|
||||||
echo '```' >> $@
|
echo '```' >> $@
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Note the order:
|
Note the order:
|
||||||
@ -92,7 +90,7 @@ $(storage_directory)/README.md: README.md
|
|||||||
|
|
||||||
Now you can tell `make` to create the backup:
|
Now you can tell `make` to create the backup:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
make backups/README.md
|
make backups/README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Makefile Graphs"
|
title: "Makefile Graphs"
|
||||||
tags: [ "system", "makefiles", "graph" ]
|
tags: [ "system", "make", "graph" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
If you have `graph-easy` (often in the package `perl-graph-easy` or similar), you can make a graph from the makefile with `make2graph` (the package is often called `makefile2graph`).
|
If you have `graph-easy` (often in the package `perl-graph-easy` or similar), you can make a graph from the makefile with `make2graph` (the package is often called `makefile2graph`).
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Makefiles"
|
title: "Makefiles"
|
||||||
tags: [ "system", "makefiles", "help" ]
|
tags: [ "system", "make", "help" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Make your first target 'help' to give an overview of the main targets.
|
Make your first target 'help' to give an overview of the main targets.
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
title: "Makefile Patterns"
|
title: "Makefile Patterns"
|
||||||
tags: [ "system", "makefiles" ]
|
tags: [ "system", "make" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Using the [basic example](../Makefile.md), you can make a complete backup of all backup files.
|
Using the [basic example](../Makefile.md), you can make a complete backup of all backup files.
|
||||||
@ -27,7 +27,6 @@ backups/backup.tgz: backups/backup_29.md backups/backup_30.md
|
|||||||
tar czf backups/backup.tgz backups/backup_29.md backups/backup_30.md
|
tar czf backups/backup.tgz backups/backup_29.md backups/backup_30.md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
The phony `backup` target should now point to this tar backup.
|
The phony `backup` target should now point to this tar backup.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "awk"
|
title: "awk"
|
||||||
tags: [ "System" ]
|
tags: [ "System", ".csv" ]
|
||||||
---
|
---
|
||||||
# Basics
|
# Basics
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ There are a bunch of files:
|
|||||||
|
|
||||||
Goal: swap the word "Column" for "Alice" in all files.
|
Goal: swap the word "Column" for "Alice" in all files.
|
||||||
|
|
||||||
```
|
```sh
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
for f in $(find . -name "Col*"); do
|
for f in $(find . -name "Col*"); do
|
||||||
mv "$f" $(echo "$f" | sed s/Column/Alice/)
|
mv "$f" $(echo "$f" | sed s/Column/Alice/)
|
||||||
|
@ -1,26 +1,24 @@
|
|||||||
---
|
---
|
||||||
title: "character-encoding"
|
title: "character-encoding"
|
||||||
tags: [ "System" ]
|
tags: [ "System", "encoding" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Convert a text file from one encoding type to another with:
|
Convert a text file from one encoding type to another with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
iconv -f ascii -t utf8 oldfilename > newfilename
|
iconv -f ascii -t utf8 oldfilename > newfilename
|
||||||
```
|
```
|
||||||
|
|
||||||
Available options are:
|
Available options are:
|
||||||
|
|
||||||
* ISO-8859-15
|
- ISO-8859-15
|
||||||
|
- UTF-8
|
||||||
* UTF-8
|
- ASCII
|
||||||
|
- Lots more
|
||||||
* ASCII
|
|
||||||
|
|
||||||
* Lots more
|
|
||||||
|
|
||||||
Generate a full list of encoding types available with:
|
Generate a full list of encoding types available with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
iconv -l
|
iconv -l
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "deduplicate"
|
title: "deduplicate"
|
||||||
tags: [ "system", "deduplicate", "duplicates", "maintenance" ]
|
tags: [ "system", "deduplicate", "maintenance", "storage" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
`rdfind`: find duplicate files, then delete them, or turn them into links.
|
`rdfind`: find duplicate files, then delete them, or turn them into links.
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
---
|
---
|
||||||
title: "$EDITOR"
|
title: "$EDITOR"
|
||||||
tags: [ "System" ]
|
tags: [ "system" ]
|
||||||
---
|
---
|
||||||
The System's default text editor can be defined within /etc/profile. It's given the variable `EDITOR`.
|
The System's default text editor can be defined within /etc/profile. It's given the variable `EDITOR`.
|
||||||
|
|
||||||
Add these lines to `/etc/profile.d/local.sh`:
|
Add these lines to `/etc/profile.d/custom.sh`:
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
export EDITOR=vim
|
|
||||||
|
|
||||||
export VISUAL=$EDITOR
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo 'export EDITOR=vim' >> /etc/profile.d/custom.sh
|
||||||
|
echo 'export VISUAL=$EDITOR' >> /etc/profile.d/custom.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Then reload that profile with:
|
Then reload that profile with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
source /etc/profile
|
source /etc/profile
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to ensure `nano` never appears again:
|
If you want to ensure `nano` never appears again:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo ln -sf $(which vim) $(which nano)
|
sudo ln -sf $(which vim) $(which nano)
|
||||||
```
|
```
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "fstab"
|
title: "fstab"
|
||||||
tags: [ "System" ]
|
tags: [ "system", "disk" ]
|
||||||
---
|
---
|
||||||
# Basics
|
# Basics
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ Ignore this obsolete option.
|
|||||||
## 6: Pass
|
## 6: Pass
|
||||||
|
|
||||||
| Number | Meaning |
|
| Number | Meaning |
|
||||||
| | |
|
|:------:|:---------------------:|
|
||||||
| 0 | Swap (or not mounted) |
|
| 0 | Swap (or not mounted) |
|
||||||
| 1 | Mount at / |
|
| 1 | Mount at / |
|
||||||
| 2 | Mount somewhere else |
|
| 2 | Mount somewhere else |
|
||||||
@ -37,5 +37,5 @@ Ignore this obsolete option.
|
|||||||
## Options
|
## Options
|
||||||
|
|
||||||
- `nofail` means the computer will not fail to boot, even if the drive fails, or is unplugged. It's a good option for everything except `/`.
|
- `nofail` means the computer will not fail to boot, even if the drive fails, or is unplugged. It's a good option for everything except `/`.
|
||||||
- noauto means 'don't mount on boot' (but you can still mount with `mount -a`).
|
- `noauto` means 'don't mount on boot' (but you can still mount with `mount -a`).
|
||||||
|
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
---
|
---
|
||||||
title: "kernel"
|
title: "kernel"
|
||||||
tags: [ "System" ]
|
tags: [ "system" ]
|
||||||
---
|
---
|
||||||
Check which kernet modules are loaded into memory
|
|
||||||
|
|
||||||
```bash
|
Check which kernel modules are loaded into memory:
|
||||||
sudo /sbin/lsmod
|
|
||||||
|
```sh
|
||||||
|
su root
|
||||||
|
/sbin/lsmod
|
||||||
```
|
```
|
||||||
|
|
||||||
Check which virtual box modules are loaded into memory
|
Check which virtual box modules are loaded into memory
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo /sbin/lsmod | grep vbox
|
/sbin/lsmod | grep vbox
|
||||||
```
|
```
|
||||||
|
|
||||||
Virtual box is using vboxpci, vboxnetadp, vboxnetflt, vboxdr.
|
Virtual box is using vboxpci, vboxnetadp, vboxnetflt, vboxdr.
|
||||||
|
|
||||||
Look at what's claiming wifi:
|
Look at what's claiming wifi:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo lshw -C network
|
lshw -C network
|
||||||
```
|
```
|
||||||
|
|
||||||
If this shows that the device is 'unclaimed' then it's time to add a module, e.g. ath9k.
|
If this shows that the device is 'unclaimed' then it's time to add a module, e.g. ath9k.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo modprobe ath9k
|
modprobe ath9k
|
||||||
```
|
```
|
||||||
|
|
||||||
Modules can also be 'restarted' by removing and adding them, e.g. the video module, 'uvcvideo':
|
Modules can also be 'restarted' by removing and adding them, e.g. the video module, 'uvcvideo':
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo rmmod uvcvideo
|
rmmod uvcvideo
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo modprobe uvcvideo
|
modprobe uvcvideo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "lf - The Light File Manager"
|
title: "lf - The Light File Manager"
|
||||||
tags: [ "File Browser" ]
|
tags: [ "File Browser", "TUI" ]
|
||||||
---
|
---
|
||||||
|
|
||||||

|

|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "mdadm"
|
title: "mdadm"
|
||||||
tags: [ "RAID" ]
|
tags: [ "RAID", "disk" ]
|
||||||
---
|
---
|
||||||
# RAID5
|
# RAID5
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ Show memory usage in Gibitytes.
|
|||||||
```bash
|
```bash
|
||||||
free -g
|
free -g
|
||||||
```
|
```
|
||||||
|
|
||||||
Show low and high gigibtye usage on a *l*ine, and repeat the measurement every 5 seconds:
|
Show low and high gigibtye usage on a *l*ine, and repeat the measurement every 5 seconds:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
title: "partitions"
|
title: "partitions"
|
||||||
tags: [ "System" ]
|
tags: [ "System" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
# FDisk Basics
|
# FDisk Basics
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo fdisk /dev/sda
|
su root
|
||||||
|
fdisk /dev/sda
|
||||||
```
|
```
|
||||||
|
|
||||||
- m for help.
|
- m for help.
|
||||||
@ -31,20 +33,20 @@ fdisk will not help with a GPT formatted drive. For this, use gdisk, which is m
|
|||||||
|
|
||||||
Now that we have a partition, we can make it into a fileSystem. Most will use:
|
Now that we have a partition, we can make it into a fileSystem. Most will use:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mkfs -t ext4 /dev/sdc1
|
mkfs -t ext4 /dev/sdc1
|
||||||
```
|
```
|
||||||
|
|
||||||
or if you're making a swap partition, you can use:
|
or if you're making a swap partition, you can use:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mkswap /dev/sdb2
|
mkswap /dev/sdb2
|
||||||
```
|
```
|
||||||
|
|
||||||
or for the reiser fileSystem, we can use:
|
or for the reiser fileSystem, we can use:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mkreiserfs /dev/sdc2
|
mkreiserfs /dev/sdc2
|
||||||
```
|
```
|
||||||
|
|
||||||
# File System Types
|
# File System Types
|
||||||
@ -61,86 +63,86 @@ sudo mkreiserfs /dev/sdc2
|
|||||||
|
|
||||||
# Parted
|
# Parted
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo parted /dev/sdb
|
parted /dev/sdb
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
# Monitoring
|
# Monitoring
|
||||||
Look at physical and virtual partitions:
|
Look at physical and virtual partitions:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
df -h
|
df -h
|
||||||
```
|
```
|
||||||
|
|
||||||
or divide things by inode - the thing which records where files are?
|
or divide things by inode - the thing which records where files are?
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
df -i
|
df -i
|
||||||
```
|
```
|
||||||
|
|
||||||
Examine a fileSystem with:
|
Examine a fileSystem with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo dumpe2fs /dev/sda1 | less
|
dumpe2fs /dev/sda1 | less
|
||||||
```
|
```
|
||||||
|
|
||||||
# Prevention
|
# Prevention
|
||||||
There are multiple programs which work mostly the same way.
|
There are multiple programs which work mostly the same way.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo tune2fs -c 30 /dev/sda1
|
tune2fs -c 30 /dev/sda1
|
||||||
```
|
```
|
||||||
|
|
||||||
This will check sda1 every 30 boots. It can also be checked every month.
|
This will check sda1 every 30 boots. It can also be checked every month.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo tune2fs -i 1m /dev/sda1
|
tune2fs -i 1m /dev/sda1
|
||||||
```
|
```
|
||||||
|
|
||||||
This thing can also make a new label for the System:
|
This thing can also make a new label for the System:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo tune2fs -L new_name /dev/sdb3
|
tune2fs -L new_name /dev/sdb3
|
||||||
```
|
```
|
||||||
|
|
||||||
# Repair
|
# Repair
|
||||||
Start by unmounting the fileSystem.
|
Start by unmounting the fileSystem.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo umount /dev/sdc1
|
umount /dev/sdc1
|
||||||
```
|
```
|
||||||
|
|
||||||
Then it's time to check.
|
Then it's time to check.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo fsck /dev/sdc1
|
fsck /dev/sdc1
|
||||||
```
|
```
|
||||||
|
|
||||||
And possibly repair damage:
|
And possibly repair damage:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
e2fsck -p /dev/sdc1
|
e2fsck -p /dev/sdc1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
or the same with:
|
or the same with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo debugfs /dev/sdc1
|
debugfs /dev/sdc1
|
||||||
```
|
```
|
||||||
|
|
||||||
# Mounting
|
# Mounting
|
||||||
You can mount with a specified filetype with:
|
You can mount with a specified filetype with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mount -t ext3 /dev/sdc2 /mnt/stick
|
mount -t ext3 /dev/sdc2 /mnt/stick
|
||||||
```
|
```
|
||||||
|
|
||||||
or if you don't know the type, just try the lot:
|
or if you don't know the type, just try the lot:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mount -a /dev/sdc1 /mnt/stick
|
mount -a /dev/sdc1 /mnt/stick
|
||||||
```
|
```
|
||||||
|
|
||||||
# File Systems
|
# File Systems
|
||||||
@ -152,35 +154,35 @@ NB: When I followed these instructions, the process destroyed my data. Seemed fi
|
|||||||
|
|
||||||
Check the fileSystem's health:
|
Check the fileSystem's health:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo e2fsck -f /dev/sdb1
|
e2fsck -f /dev/sdb1
|
||||||
```
|
```
|
||||||
|
|
||||||
Resize the file System to something smaller than what you want, so here I want 500G and so I resize to 450 G.
|
Resize the file System to something smaller than what you want, so here I want 500G and so I resize to 450 G.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
resize2fs /dev/sdb1 450G
|
resize2fs /dev/sdb1 450G
|
||||||
```
|
```
|
||||||
|
|
||||||
Then delete the partition with either gdisk or fdisk, depending upon the layout.
|
Then delete the partition with either gdisk or fdisk, depending upon the layout.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo fdisk /dev/sdb
|
fdisk /dev/sdb
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
d
|
d
|
||||||
```
|
```
|
||||||
|
|
||||||
Then make a new fileSystem of the desired type with:
|
Then make a new fileSystem of the desired type with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
n
|
n
|
||||||
```
|
```
|
||||||
|
|
||||||
And finally resize to the full size you want:
|
And finally resize to the full size you want:
|
||||||
|
|
||||||
sudo resize2fs /dev/sdb1
|
resize2fs /dev/sdb1
|
||||||
|
|
||||||
And then check your disk again with e2fsck.
|
And then check your disk again with e2fsck.
|
||||||
|
|
||||||
@ -193,20 +195,18 @@ Let's start with names. PV = 'Physical Volume', VG = 'Volume Group', and LV = '
|
|||||||
|
|
||||||
Now we can create a volume group out of sdb2 and sdc3:
|
Now we can create a volume group out of sdb2 and sdc3:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo vgcreate my-new-vg /dev/sdb2 /dev/sdc3
|
vgcreate my-new-vg /dev/sdb2 /dev/sdc3
|
||||||
```
|
```
|
||||||
|
|
||||||
Then make a new logical volume out of the volume group:
|
Then make a new logical volume out of the volume group:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo lvcreate -n my-new-lv my-new-vg
|
lvcreate -n my-new-lv my-new-vg
|
||||||
```
|
```
|
||||||
|
|
||||||
Then have a look at all logical volumes:
|
Then have a look at all logical volumes:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo lvscan
|
lvscan
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,49 +4,47 @@ tags: [ "basics" ]
|
|||||||
---
|
---
|
||||||
# Making a Swap File
|
# Making a Swap File
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
|
su root
|
||||||
cd /var/cache/
|
cd /var/cache/
|
||||||
```
|
dd if=/dev/zero of=swapfile bs=1K count=4M
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo dd if=/dev/zero of=swapfile bs=1K count=4M
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This creates a swapfile of (1k x 4M) 4 Gigs.
|
This creates a swapfile of (1k x 4M) 4 Gigs.
|
||||||
Change 4M to XM for an XGig swap.
|
Change 4M to XM for an XGig swap.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo chmod 600 swapfile
|
chmod 600 swapfile
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mkswap swapfile
|
mkswap swapfile
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo swapon swapfile
|
swapon swapfile
|
||||||
```
|
```
|
||||||
|
|
||||||
Test it's working with top
|
Test it's working with top
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
top -bn1 | grep -i swap
|
top -bn1 | grep -i swap
|
||||||
```
|
```
|
||||||
|
|
||||||
or:
|
or:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "/var/cache/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
|
echo "/var/cache/swapfile none swap sw 0 0" | tee -a /etc/fstab
|
||||||
```
|
```
|
||||||
|
|
||||||
Test it'll work at boot with:
|
Test it'll work at boot with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo swapoff swapfile
|
swapoff swapfile
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo swapon -va
|
swapon -va
|
||||||
```
|
```
|
||||||
|
|
||||||
# Partition Swaps
|
# Partition Swaps
|
||||||
@ -57,13 +55,13 @@ Put this in /etc/fstab:
|
|||||||
|
|
||||||
Then test it works with:
|
Then test it works with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo swapon -va
|
swapon -va
|
||||||
```
|
```
|
||||||
|
|
||||||
Test other partitions in fstab with:
|
Test other partitions in fstab with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo mount -a
|
mount -a
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: "tmux"
|
title: "tmux"
|
||||||
tags: [ "System" ]
|
tags: [ "system" ]
|
||||||
---
|
---
|
||||||
Start with:
|
Start with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
tmux
|
tmux
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -34,21 +34,21 @@ In addition to Windows, there are panes.
|
|||||||
|
|
||||||
Crate a new session with the name 'backup'.
|
Crate a new session with the name 'backup'.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
tmux new -s backup
|
tmux new -s backup
|
||||||
```
|
```
|
||||||
|
|
||||||
List sessions:
|
List sessions:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
tmux list-sessions
|
tmux list-sessions
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
tmux kill-session -t 2
|
tmux kill-session -t 2
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
tmux attach -t backup
|
tmux attach -t backup
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -2,21 +2,21 @@
|
|||||||
title: "Docker"
|
title: "Docker"
|
||||||
tags: [ "documentation", "Virtualization" ]
|
tags: [ "documentation", "Virtualization" ]
|
||||||
---
|
---
|
||||||
```bash
|
```sh
|
||||||
sudo pacman -S docker
|
sudo pacman -S docker
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo usermod -aG docker $USER
|
sudo usermod -aG docker $USER
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo systemctl start docker
|
sudo systemctl start docker
|
||||||
```
|
```
|
||||||
|
|
||||||
You need to either log out and back in again to be in the docker group, or run everything as root.
|
You need to either log out and back in again to be in the docker group, or run everything as root.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
# docker info
|
# docker info
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -24,19 +24,19 @@ This should show you things are working.
|
|||||||
|
|
||||||
Search for a distro you want
|
Search for a distro you want
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker search debian
|
docker search debian
|
||||||
```
|
```
|
||||||
|
|
||||||
If you get a hit, pull it.
|
If you get a hit, pull it.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker pull debian
|
docker pull debian
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run a live image:
|
Then run a live image:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker run -it debian
|
docker run -it debian
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -44,13 +44,13 @@ docker run -it debian
|
|||||||
|
|
||||||
Check currently running containers with
|
Check currently running containers with
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker ps
|
docker ps
|
||||||
```
|
```
|
||||||
|
|
||||||
Check all containers with
|
Check all containers with
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker ps -a
|
docker ps -a
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ Now we can get a list of all containers.
|
|||||||
|
|
||||||
To delete one, take the id, e.g. '97796727e883', and run:
|
To delete one, take the id, e.g. '97796727e883', and run:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker rm 97796727e883
|
docker rm 97796727e883
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ docker rm 97796727e883
|
|||||||
|
|
||||||
Get a list of docker container ips
|
Get a list of docker container ips
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' *container_name_or_id*
|
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' *container_name_or_id*
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -6,27 +6,27 @@ tags: [ "System" ]
|
|||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo pacman -S virtualbox-host-modules-arch virtualbox-guest-iso
|
sudo pacman -S virtualbox-host-modules-arch virtualbox-guest-iso
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo modprobe vboxdrv
|
sudo modprobe vboxdrv
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
# vboxreload
|
# vboxreload
|
||||||
```
|
```
|
||||||
|
|
||||||
Make dd image into vdi
|
Make dd image into vdi
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage convertdd base.dd output.vdi --format VDI
|
VBoxManage convertdd base.dd output.vdi --format VDI
|
||||||
```
|
```
|
||||||
|
|
||||||
If this doesn't work, try to make a new bite size with just
|
If this doesn't work, try to make a new bite size with just
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo dd if=image.dd of=image2.dd bs=512 conv=sync
|
sudo dd if=image.dd of=image2.dd bs=512 conv=sync
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -34,19 +34,19 @@ sudo dd if=image.dd of=image2.dd bs=512 conv=sync
|
|||||||
|
|
||||||
List boxes:
|
List boxes:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage list vms
|
VBoxManage list vms
|
||||||
```
|
```
|
||||||
|
|
||||||
Start a headless instance
|
Start a headless instance
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage startvm "rata" --type headless
|
VBoxManage startvm "rata" --type headless
|
||||||
```
|
```
|
||||||
|
|
||||||
To pause the machine:
|
To pause the machine:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage controlvm "rata" pause --type headless
|
VBoxManage controlvm "rata" pause --type headless
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -64,15 +64,15 @@ You can do a number of things to virtualboxes this way:
|
|||||||
|
|
||||||
Creating a VM requires registering it:
|
Creating a VM requires registering it:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage createvm --name Ubuntu19.04 --register --ostype Ubuntu
|
VBoxManage createvm --name Ubuntu19.04 --register --ostype Ubuntu
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage modifyvm Ubuntu19.04 --memory 1042
|
VBoxManage modifyvm Ubuntu19.04 --memory 1042
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
VBoxManage storagectl Ubuntu19.04 -name IDE --add ide --controller PIIX4 --bootable on
|
VBoxManage storagectl Ubuntu19.04 -name IDE --add ide --controller PIIX4 --bootable on
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -5,15 +5,15 @@ tags: [ "xe", "virtualization", "volume" ]
|
|||||||
# Make a local iso repository
|
# Make a local iso repository
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
STORE_PATH=/var/opt/xen/ISO_Store
|
STORE_PATH=/var/opt/xen/ISO_Store
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
mkdir -p $STORE_PATH
|
mkdir -p $STORE_PATH
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
xe sr-create name-label="$STORAGE_NAME" type=iso device-config:location=$STORE_PATH device-config:legacy_mode=true content-type=iso
|
xe sr-create name-label="$STORAGE_NAME" type=iso device-config:location=$STORE_PATH device-config:legacy_mode=true content-type=iso
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -23,7 +23,7 @@ This creates a UUID for the new directory:
|
|||||||
|
|
||||||
# Main Console
|
# Main Console
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
xsconsole
|
xsconsole
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -31,13 +31,13 @@ xsconsole
|
|||||||
|
|
||||||
List volumes:
|
List volumes:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
lvs
|
lvs
|
||||||
```
|
```
|
||||||
|
|
||||||
List groups:
|
List groups:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
vgs
|
vgs
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -5,21 +5,21 @@ tags: [ "Markdown", "PDF", "Vision" ]
|
|||||||
|
|
||||||
Turn a markdown file into a pdf:
|
Turn a markdown file into a pdf:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
lowdown -stms "$FILE".md | pdfroff -itk -mspdf > "$FILE".pdf
|
lowdown -stms "$FILE".md | pdfroff -itk -mspdf > "$FILE".pdf
|
||||||
```
|
```
|
||||||
|
|
||||||
*Example:* put [this Makefile](lowdown/example.txt) in a directory, rename it `Makefile`, then do:
|
*Example:* put [this Makefile](lowdown/example.txt) in a directory, rename it `Makefile`, then do:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
make example
|
make example
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
To give the document a title, put that title in the metadata:
|
To give the document a title, put that title in the metadata:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sed -i "1 i---" "$FILE".md
|
sed -i "1 i---" "$FILE".md
|
||||||
sed -i "1 ititle: $TITLE" "$FILE".md
|
sed -i "1 ititle: $TITLE" "$FILE".md
|
||||||
sed -i "1 i---" "$FILE".md
|
sed -i "1 i---" "$FILE".md
|
||||||
|
Loading…
Reference in New Issue
Block a user