- Notifications
You must be signed in to change notification settings - Fork4
davidhcefx/My-Linux-Notes
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
My learning notes while exploring Linux, Ubuntu and Xubuntu.
To execute a file:
./fileTo create a Desktop or Launcher shortcut, you need a
.desktopfile. (Refer to /usr/share/applications)Use
TABfor auto-completion in terminal. (Won't forget names anymore!)Install
rarto unpack a.rarfile.System freezed? Try
Ctrl-Alt-F1to access the terminal.SysRq:
Alt+SysRq+ "REISUB" ("busier")R: exit Raw mode (X window) E: terminate all I: force terminate S: Sync disk U: umount disk B: reboot F: call oom_kill (kill one) htop: A colorful yet handy system resource monitor.Fast OS simulation:
qemu-system-x86_64 [iso file]List files in the recycle bin sorted by deletion time:
cd ~/.local/share/Trash/files; stat -c "%z - %n" * | sort -t'-'.Ubuntu 16+ DO NOT run startup scripts from
/etc/rcX.danymore; Use the crontab@rebootmethod instead. (But do remember that root's crontab cannot read encrypted user data)Crontab can be dumped and loaded:
crontab -l > dump; crontab dump
- The format of
/etc/crontabis different thancrontab -e.
Sticky bit:
------t. Only the owner can remove it, even if it's chmod777(eg. /tmp)SetUID: Cannot be applied toscripts; Executables are also not supported under
/tmpand/home. (which are mounted asnosuid)Systemctl's
is-enablecommand can check for "generated scripts".Calling grep multiple time is faster than parsing with a single while-loop. (for big files)
MessageOfTheDay (the tty greetings) is under
/etc/update-motd.d/.Locate: A utility for reverse-mapping filenames to paths. However, it will scan the whole system everyday (updatedb.mlocate), so remember to turn it off if not needed.Secure boot: Not all modules are signed, hence the error message: XX kernel module not found or loaded.
'-' is nothing special; it is just that programs such as
catview it asstdin.Disable alias temporarily: 1)
command [name], 2)'[name]', 3)\[name].Analyze core dumps: 1)
ulimit -c unlimited, 2) After crash,gdb [program] core.
Can also be viewed with
readelforobjdump -s, eg.note0 section:OFFSET VALUES (SIZE)34 pid, ppid, pgrd, sid (DWORD)44 usertime, systime, cum_usertime, cum_systime (0x10)84 r15, r14, r13, r12 (QWORD)a4 bp, bx, r11, r10 (QWORD)c4 r9, r8, ax, cx (QWORD)e4 dx, si, di, orig_ax (QWORD)104 ip, cs, flags, sp (QWORD)124 ss, fsbase, gsbase, ds (QWORD)144 es, fs, gs (QWORD)Cygwin:
export CYGWIN="$CYGWIN error_start=dumper -d %1 %2"Beware that Apport/ABRT sometimes hide the core files.
Color is just CSI sequences, while programs detect the destination themselves (eg. ls --color=auto)
ptrace:only child relationship or setup PTRACE_TRACEME flag can a process been traced (
/proc/sys/kernel/yama/ptrace_scope)
Read the manual:
man [something](.SECTION_NUMBER)-f: search among page names.-M [/usr/local/man]: search under a different MANPATH.info [somthing]can also be helpful.
Grep to filter:
ls | grep "sys"^[a-z]: Starting /$: Ending /.Any /?Optional
Print contents:
cat [textfile]Rename through moving:
mv aaa abbbCreate soft link:
ln -s /home/afolder /home/f/FolderChange file permission:
chmod g+x file---> ['u'=owner/'g'=group/'o'=other] [+-] ['r'=read/'w'=write/'x'=execute]chmod 705 file---> (eg. '0'=---, '1'=--x, ..., '7'=rwx)
Change owner:
chown [user]:[group] fileFile info (
ls -l):-rw-rw-r-- 1 [user] [usergroup] [1024] [Sep 26 18:48] [file.name]The first '-' indicates file type: '-'=file, 'd'=dir, 'l'=link
Inode: Record metadata (eg. size) and position of data block
Directory: Is a file, which map filenames to their inode number
pwd: Print current directory path.apt:
apt-get install...apt-cache search...apt-cache show [package name](detail info)apt autoremove(remove useless packages)apt-get update(refresh updatable list)apt-get upgrade(install update)add-apt-repository ppa:webupd8team/java(add package source)--reinstall
dpkg:-i(install)-l(list packages)-r(remove)-p(also purge config)dpkg-reconfigure
sudo passwd root(change root account's password)mount -t ntfs /dev/sda1 /mnt/winOS/ -o "umask=022"umount /dev/sda1
su [user] --shell /bin/bash: Login as user with a shell.sudo -k: Reset credential, require password to use sudo again.
rsync -av ~/Desktop/ ~/backup/fold1/(A tool more powerful than cp)--exclude={"a/*","auto*","a/.gitignore"}
systemd-analyze (time / blame / critical-chain)systemctl (status / disable / stop)
System info:
uname -a: Show system info.inxi: Show lots of system info (-Sfor distro/DE version)ls /usr/bin/*session(Find out which DE has been installed)
du -h /home/david: Show file's size. (can filter withgrep ^[0-9]*G)df -h: Show disk usage.
ip link: List network interfaces (NIC). Check if there is "UP" inside <>.ip addr add [ip] broadcast + dev [interface]: Add a static ip.ip route add default via [gateway ip] dev [interface]: Add a default router.ifconfig eth0:0 [addr]: Create a virtual interface.
iotop: View disk usage of every process.nmcli dev wifi: List available Wifi APs.nmcli dev wifi connect [iTaiwan] password [0123456789]
lshw: List hardware info.lscpu: Show cpu architecture info.date -d @[seconds since epoch]: convert "seconds since epoch" to readable date.head -n x ./myfile: Print the first x line of file/stdin (if file not provided).User:
who: Show current user.pkill -u [username]: Logout a user.adduser [name] --home /home/name --shell /bin/bash
Groups:
groups [user]: Show a user's groupsusermod -a -G [group] [user]: Add user to a group.gpasswd -d [user] [group]: Remove user from a group.
Mount eCryptfs:
sudo mount -t ecryptfs [.Private] [/mnt/point](suare needed sometimes)wmctrl -k on: Minimize all windows. (off=switch back)time [command]: Record command's execution time.- Get output:
bash -c "time [command]" 2>&1
- Get output:
xdotool: Can emulate key presses and mouse clicks.stat: Show file modification time, size, links, type and permission.Link count: Number of hard references to this inode.
- eg.
mkdir -p A/Bgenerates 3 count for A:A/B/..A/.and A
- eg.
file: Show file type.
xxd: Hex dump (-bfor binary dump)Message box:
zenity --question --window-icon="question" --title="title" --text="some text"notify-send -t 4000 "some message"
sed:Substitution:
's/Regex/ReplaceStr/Options'- Deliminators can be other than
/, eg.|:# - Use
\(foo\)to remember and\1\2\3to recall. (note that backreference runs slower) - Use
&in ReplaceStr to get the matching part. - Substitute only within line 1~4:
1,4s/.../.../- only within matched lines:
/Pattern/s/.../.../
- only within matched lines:
- Deliminators can be other than
Options or commands:
g= Replace all.2= Perform on the 2nd occurence.i= Case isensitivep= Print matched line.d= Delete matched line.q= Quit.i\= Insert text before.
Find and print a pattern:
sed -n '/Regex/p'(-n= disable echoing)2,$p: Print 2nd line ~ end/xxx/,$p: Print after including xxx1,/xxx/d: excluding
/xxx/q: Print before including xxx/xxx/q;p: excluding (if not match then print)
Regex:
a*a\+a\?\(a\|b\)a\{N,M\}(<- N~M matches)- Extended (-E):
a+a?(a|b)a{N,M} - Charset:
[:space:],[:digit:],[:alpha:],[:lower:],[:punct:] - A
*always tries to match the longest first occurence.
- Extended (-E):
Run multiple sed sequentially:
sed -e 'script1' -e 'script2'x: Swap pattern space with hold space. (pattern space: the matching line)Escaping the ReplaceStr (for delim=/):
's/[\/&]/\\&/g'Escaping the Pattern (for BRE and delim=/):
-E 's/([]\/^$.*]|\[)/\\&/g'Caution:
- Beware of shell expansion within double quotes
"":$, ``` and\\. - Matching non-ASCII charactersmight go wrong.
- Beware of shell expansion within double quotes
$!: Holds the last background process' pid.find . -name 'basename'(wildcards supported)Options:
-type f -size 100c -mtime -3 -maxdepth 5find . -regex '.*full/path/regex'find . -regex '\./ignore/.*' -prune -or -name 'name'(skip './ignore/' subdir)
lsof: find out which process opened a file.Vim editor:
/(search),/\%xa9(search hex):d30(delete 30 lines)ga(show current char)
cut -d " " -f2: Print second column, seperated by a single space.awk '{print $2}': Print second column, seperated by whitespaces.ls -l | awk -v perm="-rwxr-xr-x" '$1 == perm { $1="EXE: "; printf "%s\n", $0; system("sleep 1") }'awk -F . '{printf("%d %d %d"), $1, $2, $3}': version string to integerawk '/pty1/ {if ($1=="david") print $2 }': when contain "pty1", if $1 is "david" print $2
history -c; history -r: Clear current bash history in memory.strace: Trace all syscall of a program.sudo rm -rf --no-preserve-root / &>/dev/null(don't try it :D)Set Unset Show Shell variables var=[value]unset varsetEnviron variables export var=[value]export -n varprintenv- If a variable is already in Environ, the first method would also change it.
trap "echo "I have been interrupted"; exit 0" SIGINTIgnore signal:
""; Restore to default:-Ctrl-cwill send SIGINT to all foreground processes (inner one handle first)Avoid calling
exit 0directly; Writetrap - SIGINT; kill -2 $$instead.- For Bash usesWait-and-Cooperative-Exit, which will depend on how its child has terminated.
kill -SIGINT [process_id]: Send signals to processes.timeout [duration] [command]: Run a command with a time limit.mktemp --tmpdir prefix_XXXXXX: Create unique temp file with race-condition safety.lslogins -u: View each user's login time, number of process etc.swapoff -a: Move data from swap back to RAM and disable swap.journalctl (-u apache2): View systemd logs.xargs: Place input at arguments, eg.ls *.txt | xargs stat
About
My learning notes while exploring Linux
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.