6.0 Squeeze 2.6.32 -> Security until February 2016
7 Wheezy 3.2 -> Security until May 2018
8 Jessie 3.16 -> Security until April/May 2020
9 Stretch 4.9 -> Security until June 2022
10 Buster 4.19 -> Security until June 2024
11 Bullseye 5.10 -> Security until June 2026
12 Bookworm 6.1 -> Security until June 2028
Install
from existing: https://www.debian.org/releases/stretch/amd64/apds03.html.en
Download
Debian
https://www.debian.org/CD/live/
Ubuntu
http://ftp.sjtu.edu.cn/ubuntu-cd/
http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-amd64/current/images/netboot/mini.iso
( Mirror only http://us.archive.ubuntu.com/ , need proxy, local DNS not working )
url=https://raw.githubusercontent.com/fzinfz/scripts/master/init.sh # alias & functions
source /dev/stdin <<< "$(curl -sS $url)"
set
-x debug
-T If set, any traps on DEBUG and RETURN are inherited
-o functrace/errtrace
shopt [-pqsu] [-o] [optname …]
-s: Enable (set) each optname.
-u: Disable (unset) each optname.
shopt -s expand_aliases # when the shell is not interactive
alias foo='...'
0: stdin; 1: stdout; 2: stderr # File descriptor
2>&1 >/dev/null
&>/dev/null
ssh-add 2>/dev/null
ls -R -l /etc/rc*
ls -l /usr/lib/systemd # check `systemd` page for more
ls -l /usr/share/upstart # last release 2014; 3 years ago
ls -l /etc/init.d # SysV init
cat /etc/modules-load.d/*
apt install systemd-sysv # make link: /sbin/init -> /lib/systemd/systemd
1 Catchall for general errors
2 Misuse of shell builtins
126 Command invoked cannot execute
127 "command not found" illegal_command Possible problem with $PATH or a typo
128+n Fatal error signal "n"
kill -9 $PPID of script $? returns 137 (128 + 9)
130 Script terminated by Control-C
Syslog Message Severities
https://tools.ietf.org/html/rfc5424#section-6.2.1
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2 Critical: critical conditions
3 Error: error conditions
4 Warning: warning conditions
5 Notice: normal but significant condition
6 Informational: informational messages
7 Debug: debug-level messages
* 1 - Single Cpu Off (thus multiple cpus)
* c - Command line Off (name, not cmdline)
* i - Idle tasks On (show all tasks)
j - Str align right Off (not right justify)
V - Forest view On (show as branches)
f - sort/hide columns
(`*') could be overridden through the command-line.
Main - Canonical-supported free and open-source software.
Universe - Community-maintained free and open-source software.
Restricted - Proprietary drivers for devices.
Multiverse - Software restricted by copyright or legal issues.
# https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
Debian
→ experimental
→ unstable(Sid) → testing → stable
Unstable - repository where new & untested packages are introduced.
Testing - repository with packages from unstable, if no bug are found within 10 days.
main consists of DFSG-compliant packages, which do not rely on software outside this area to operate. These are the only packages considered part of the Debian distribution.
contrib packages contain DFSG-compliant software, but have dependencies not in main (possibly packaged for Debian in non-free).
non-free contains software that does not comply with the DFSG.
deb http://mirror.sjtu.edu.cn/debian/ bullseye main contrib non-free
experimental
deb http://mirror.sjtu.edu.cn/debian/ experimental main contrib non-free
apt install -t experimental linux-image-amd64 # latest kernel
dpkg
dpkg --get-selections # list installed
To install .deb manually, visit linux/kernel page.
deb http://.../debian/ buster main contrib non-free
apt install openssh-server # not "openssl"
journalctl -u ssh # fix: ssh-rsa not in PubkeyAcceptedAlgorithms
PubkeyAcceptedAlgorithms +ssh-rsa
Grub
grub2-mkconfig -o /boot/grub2/grub.cfg
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
grub2-set-default 'CentOS Linux (4.9.0-rc8-amd64) 7 (Core)'
grub2-editenv list
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=32 run
wget http://www.numberworld.org/y-cruncher/y-cruncher%20v0.7.9.9510-static.tar.xz
tar -xf y-cruncher*.tar.xz
sshd
mobaxterm login failed: No supported authentication methods
curl -O http://...
curl -o diff_name.zip http://
curl -sSL $1
-f, --fail Fail silently (no output at all) on HTTP errors (H)
-s, --silent Silent mode (don't output anything)
-S, --show-error Show error. With -s, make curl show errors when they occur
-L, --location Follow redirects (H)
-o, --output FILE Write to FILE instead of stdout
-O, --remote-name Write output to a file named as the remote file
grep --color=auto -rn -P "${regex}" ${path}
# -r, --recursive like --directories=recurse
# -n, --line-number print line number with output lines
# -P, --perl-regexp PATTERN is a Perl regular expression
compress/uncompress
gunzip file.gz
tar -czvf name-of-archive.tar.gz /path/to/directory-or-file # Compress
tar -tvf my-data.tar.gz '*.py'
tar -zxvf toExtract.tar.gz
tar -xvf {tarball.tar} {special_file} -C /target/directory
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -tvf archive.tar # List all files in archive.tar verbosely.
tar -xf archive.tar # Extract all files from archive.tar.
-t, --list list the contents of an archive
-j, --bzip2 filter the archive through bzip2
-c, --create create a new archive
-x, --extract, --get extract files from an archive
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-v, --verbose verbosely list files processed
-f, --file=ARCHIVE use archive file or device ARCHIVE
zip [options] zipfile files_list
-r recurse into directories
-x exclude the following names
-v verbose operation/print version info
-m move into zipfile (delete OS files) !!
-d delete entries in zipfile !!!
-u update: only changed or new files
xz --decompress file.xz # -dgrub # unxz
rsync
rsync -aP -e "ssh -p $3" $1 root@$2
rsync -aP /root/_bin root@remote:/root
rsync -aP -e "ssh -p 10220" /local root@remote:/dir --remove-source-files
-v, --verbose increase verbosity
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
--no-OPTION turn off an implied OPTION (e.g. --no-D)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-o, --owner preserve owner (super-user only)
-g, --group preserve group
-D same as --devices --specials
-t, --times preserve modification times
-S, --sparse handle sparse files efficiently
-e, --rsh=COMMAND specify the remote shell to use
--partial keep partially transferred files
--partial-dir=DIR put a partially transferred file into DIR
-z, --compress compress file data during the transfer
--progress show progress during transfer
-P same as --partial --progress
history without line numbers
history | cut -c 8-
-a append history lines from this session to the history file ~/.bash_history
hostname
hostnamectl set-hostname GZ2C8G
font
apt-get install xfonts-base
SELinux
getenforce
semanage port -a -t mongod_port_t -p tcp 27017
Dropbox
link account
~/.dropbox-dist/dropboxd
dropboxd will create a ~/Dropbox folder and start synchronizing it after this step!
unlink: https://www.dropbox.com/account#security
git clone https://github.com/hoytech/vmtouch.git
cd vmtouch && make && sudo make install
Discovering which files your OS is caching
Telling the OS to cache or evict certain files or regions of files
Locking files into memory so the OS won't evict them
Preserving virtual memory profile when failing over servers
Keeping a "hot-standby" file-server
Plotting filesystem cache usage over time
Maintaining "soft quotas" of cache usage
Speeding up batch/cron jobs
WOL
ethtool enp1s0 | grep Wake-on
p (PHY activity)
u (unicast activity)
m (multicast activity)
b (broadcast activity)
g (magic packet activity) *
a (ARP activity)
d (disabled)
Tools - Online
http://explainshell.com/
CPU
getconf LONG_BIT
check_cpu_core_mapping
https://www.ibm.com/support/knowledgecenter/en/SSQPD3_2.6.0/com.ibm.wllm.doc/mappingcpustocore.html
same physical/core ID =》 simultaneous multi threads (SMTs) / HT
cat /proc/cpuinfo | grep -P 'processor|physical id|core id|^$'
pip install walnut # pretty print
for c in sorted([ ( int(c['processor']), int(c['physical id']), int(c['core id']) ) for c in cpu.dict().values()]): print c