Compare commits

...

9 Commits

Author SHA1 Message Date
5a1ba18176
simplify git secret flaw 2024-11-28 02:51:26 +01:00
75cf02197e
formatting 2024-11-27 22:39:50 +01:00
f62e007d1f
joyous ascii 2024-11-27 22:39:40 +01:00
095adff052
tui tag 2024-11-27 22:22:24 +01:00
f4176a9ddb
edit crontab 2024-11-27 22:21:59 +01:00
588ce9b0cb
+1 graph-easy example 2024-11-26 16:03:55 +01:00
bd657c9ddc
monitoring 2024-11-26 15:59:24 +01:00
658bda6eea
expand sc-im 2024-11-14 17:54:18 +01:00
7ec037d5df
note graph travel plans 2024-11-11 15:44:38 +01:00
9 changed files with 168 additions and 92 deletions

12
basics/Joyous_ASCII.md Normal file
View File

@ -0,0 +1,12 @@
---
title: "Joyous ASCII"
tags: [ "fun" ]
---
- `asciiquarium`
- `cbonsai -lim "$(fortune)"`
```bash
cow=$(cowsay -l | sort -R | head -1)
fortune -s | figlet | cowsay -nf $cow | lolcat
```

View File

@ -2,9 +2,11 @@
title: "cron"
tags: [ "Documentation", "Basics" ]
---
# Cron
# Cronie
The crontab program might have various names, like `cronie` or `crond`.
The `cronie` program is also known as `crond`.
## Install
```bash
sudo apt search -n ^cron
@ -17,29 +19,33 @@ sudo systemctl list-unit-files | grep cron
sudo systemctl enable --now $NAME
```
Make a file for your crontab, like this:
## Usage
Show your current crontab:
```bash
echo '39 */3 * * * /usr/bin/updatedb' > "$USER".cron
crontab -l
```
You can put this in a file and edit it:
```bash
crontab -l > $filename
echo '39 3 */3 * * /bin/tar czf /tmp/etc_backup.tgz /etc/' >> $filename
```
Then apply that crontab:
```bash
crontab "$USER".cron
rm "$USER".cron
crontab $filename
rm $filename
```
The `cron` program will check your syntax before adding the tab.
Your crontab file sits somewhere in `/var/spool/`.
Probably in `/var/spool/cron`.
Check how your tab currently looks:
```bash
crontab -l
```
## Syntax
`* * * * *`
@ -50,43 +56,61 @@ These five points refer to:
So '3pm every Sunday' would be:
> 0 15 * * 7
`0 15 * * 7`
Here 'Sunday' is indicated by "7", and '3pm' is 'the 15th hour'.
The minute is '0' (i.e. '0 minutes past three pm').
Doing the same thing, but only in February, would be:
> 0 15 * 2 7
`0 15 * 2 7`
### Full Paths
### Variables
`cronie` doesn't know where you live, so to put something in your `$HOME` directory, you have to tell it:
Executing something requires the full path to where it is, so you cannot simply use `apt update -y`, because cron does not know where `apt` is.
Instead, find out where it is:
```bash
type -P apt
echo "HOME=$HOME" > $filename
crontab -l >> $filename
crontab $filename
```
`/usr/bin/apt`
`cronie` doesn't know where anything lives, including programs.
You can give it your usual `$PATH` variable like this:
Then put that into the crontab:
```bash
sudo crontab -e
echo $PATH > $filename
crontab -l >> $filename
crontab $filename
```
> 40 */3 * * * /usr/bin/apt update -y
Now instead of doing this
This will run `apt update -y` as root every 3 hours, at 40 minutes past the hour, e.g. 00:40, 03:40, 06:40.
`40 */3 * * * /usr/bin/du -sh $HOME/* | sort -h > $HOME/sum.txt`
## Directories
You can simply do this:
`40 */3 * * * du -sh $HOME/* | sort -h > $HOME/sum.txt`
## Run as Root
You can execute a script as root by putting it into a directory, instead of in the tab.
Look at the available cron directories:
```bash
ls /etc/cron.\*
ls -d /etc/cron.*
```
Make a script which runs daily:
```bash
f=apt_update.sh
echo '#!/bin/bash' > $f
echo 'apt update --yes' >> $f
chmod +x $f
sudo mv $f /etc/cron.daily/
```
### Testing with runparts
@ -97,47 +121,9 @@ Run-parts runs all executable scripts in a directory.
run-parts /etc/cron.hourly
```
## Tips
### Variables
Add your `$HOME` to crontab to use scripts.
First add `HOME=/home/$USER`, then you can use syntax like this:
0 * * * * $HOME/.scripts/myScript.sh
*Remember to test the script by executing that line first*:
```bash
$HOME/.scripts/myScript.sh
```
You can also add your regular path to your crontab as a variable (see example below).
If you're using vim as the editor, just run this at the top of your crontab:
```bash
:r!echo PATH=$PATH
```
# Troubleshooting
### `date` Commands
Cron doesn't understand the `%` sign, so if you want to use `date +%R`, then it should be escaped with a backslash: `date +\%R`.
### File Location
The crontab files are in `/var/spool/cron/`, so you can backup or restore them.
# Example
```
HOME=/home/user
PATH=/usr/condabin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/user/.local/bin:/home/user/.scripts/:/home/user/.local/bin:/home/user/.scripts/
1 0 1 * * /usr/bin/mkdir -p $HOME/arc/$(date +\%Y/\%m)
18 0 1 */3 * $HOME/.scripts/mail-clean.sh
* * * * * ping -c 1 home || mail-pull.sh
50 18 * * * /usr/bin/timeout 30m /usr/bin/syncthing
```

View File

@ -1,9 +1,9 @@
---
title: "git secret"
title: "git-secret"
tags: [ "data", "git" ]
---
This utility is largely useless, as it can only identify people by their email.
So if someone has multiple GPG keys associated with one email, the tool will not work.
Worse than not working, it may 'suddenly' stop working as you try to transfer a secret to someone, who then discovers that `git-secret` requires them to mess about with their GPG keyring in order to use the repository.
A broken tool is better than a tool which will break soon.

View File

@ -1,33 +1,47 @@
---
title: "sc-im"
tags: [ "Documentation", "data" ]
tags: [ "Documentation", "TUI", "data" ]
---
- [Sample file](sc-im/sample.sc)
# Basic Commands
> H = highest part
> L = lowest part
> gg = top
## See Cells
> g$ = most right.
> g0 = most left.
Cells are hard to see.
Change this with `:set autowrap`.
> \ = insert middle
> \> = insert left
> < = insert right
Make `sc-im` always autowrap:
gb4 = to to cell b4
```bash
mkdir .config/sc-im/bash
echo 'set autowrap' >> .config/sc-im/scimrc
```
> aa = see all text in cells
> f = format cells so you can see it.
> fl = format wider right
> fh = format smaller left
## Movement
> fj = format wider down
> fk = format smaller down
| Command | Key |
|:------------------------------------|:---:|
| highest part | H |
| lowest part | L |
| top | gg |
| most right. | g$ |
| most left. | g0 |
| insert middle | \ |
| insert left | \> |
| insert right | < |
| to to cell b4 | gb4 |
| see all text in cells | aa |
| format cells so you can see it. | f |
| format wider right | fl |
| format smaller left | fh |
| format wider down | fj |
| format smaller down | fk |
# Edit
## Edit
## Text
### Text
| Action | Key |
|:----------------------|:---:|
@ -35,7 +49,7 @@ gb4 = to to cell b4
| text (right align) | > |
| Edit existing text | E |
## Meta Actions
### Meta Actions
| Action | Key |
|:----------------------|:---:|
@ -48,7 +62,7 @@ gb4 = to to cell b4
| delete a cell | x |
## Functions
### Functions
| Action | Key |
|:--------------------------------|:------------:|
@ -58,7 +72,7 @@ gb4 = to to cell b4
| minimumof those numbers | =@min(B1:B8) |
| multiply C1 to C8 | =@prod(C1:C8)|
## Visual
### Visual
| Action | Key |
|:--------------------------------|:------------:|

38
data/sc-im/sample.sc Normal file
View File

@ -0,0 +1,38 @@
# This data file was generated by the Spreadsheet Calculator Improvised (sc-im)
# You almost certainly shouldn't edit it.
newsheet "Sheet1"
movetosheet "Sheet1"
offscr_sc_cols 0
offscr_sc_rows 0
nb_frozen_rows 1
nb_frozen_cols 0
nb_frozen_screenrows 2
nb_frozen_screencols 0
format A 14 1 0
format B 18 2 0
format 0 2
freeze 0
label A0 = "Food by Weight"
leftstring B0 = "No. Meals"
leftstring A1 = "Ajvar"
let A1 = 5
let B1 = A1*$A$10
leftstring A2 = "Apples"
let A2 = 3
let B2 = A2*$A$10
leftstring A3 = "Rocket"
let A3 = 0.2
let B3 = A3*$A$10
leftstring A4 = "Beli Cheese"
let A4 = 1
let B4 = A4*$A$10
leftstring A6 = "Total"
let A6 = @sum(A1:A4)
leftstring B6 = "Total"
let B6 = @sum(B1:B4)
leftstring A7 = "Average"
let A7 = @avg(A1:A4)
leftstring A10 = "Weight of Meal"
let A10 = 0.3
goto A0

View File

@ -39,7 +39,7 @@ Try placing this in a file:
> [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; }
>
> [ One ] => { arrow-style: closed; } [ Three ]
> [ One ] => { arrow-style: closed; } [ Three ] { border-style: none; }
>
> [ Five ] { fill: maroon; color: yellow; } <=> [ Three ]
>
@ -54,3 +54,15 @@ Try placing this in a file:
> [ Eight ] .. [ None ] { shape: none; fill: red; color: brown; }
>
> [ no Network ] --> [ Is there an IP address? ]
> [ Little Group: o]
```
echo "( EU [ Madrid ] <---> [ K ] {label: Karlsruhe;}
<== ...O\n ..o\n .O\no \nchoo choo ==> [ Cern ] [ Cern ] <== ...O\n ..o\n .O\no \nchoo choo ==> [ Paris ] <...> [ B ] {label: Budapest} )
[ B ] <---> [ Belgrade ] [ G ] {label: Glasgow; }
<==> [ M ] {label: Manchester },
[ Madrid ] <---> [ Belgrade ] [ M ] <--> [ London ] <--> [ B ],
[ Belgrade ]" | graph-easy --boxart
```

View File

@ -13,11 +13,14 @@ The ordering of `/etc/fstab` is
5. dump
6. pass
E.g.:
> UUID=877f14e8-4738-46b0-884f-ba330dad1a7d /mnt/biggie ext4 nofail,rw,relatime 0 2
>
> UUID=B21648C416488AF5 /mnt/share ntfs nofail,rw,nosuid,nodev,user_id=0,group_id=0,allow_other,blksize=4096 0 0
*Example:*
```
UUID=877f14e8-4738-46b0-884f-ba330dad1a7d /mnt/biggie ext4 nofail,rw,relatime 0 2
UUID=B21648C416488AF5 /mnt/share ntfs nofail,rw,nosuid,nodev,user_id=0,group_id=0,allow_other,blksize=4096 0 0
```
## 5: Dump

View File

@ -22,3 +22,8 @@ REP=5
free --lohi -g -s $REP | lolcat
```
Check the next thing cron will do:
```bash
cronnext /var/spool/cron/$USER -l
```

View File

@ -10,6 +10,12 @@ See a running log of all system messages:
journalctl -f
```
Or just one user:
```bash
journalctl --user -f
```
Or just one unit (`sshd`):
```bash