图片来源:https://www.pixiv.net/artworks/100039624
Fork bomb
:(){ :|:& };:
将文件内容写入剪贴板
xclip -selection clipboard <FILENAME>
打印剪贴板内容
xclip -selection clipboard -o
解锁被pam锁定无法登录的用户
faillock --reset --user <USERNAME>
创建大文件,修改bs和count参数可以调整大小,合理的bs大小能提高执行效率,下面的命令在我的SSD上创建文件仅需0.35秒
dd if=/dev/zero of=file_1GB bs=128k count=8192
Vim编辑后发现因权限不足无法保存,可以在Vim内将未保存的内容导出同时再使用sudo权限强行写入原文件,然后使用“:e!”重新加载当前文件
:w !sudo tee > /dev/null %
查看各个系统目录含义
man hier
查看ASCII码表
man ascii
备份文件
mv test.conf{,.bak}
# 或者
cp test.conf{,.bak}
获取当前时间戳
# 单位秒
date +%s
# 单位毫秒
date +%s%3N
将时间戳转换为日期
date -d @1663517790 "+%F %T"
创建临时文件、文件夹
#在系统目录临时目录(一般是/tmp)创建
#创建临时文件
mktemp
#创建临时文件夹
mktemp -d
#在指定目录下创建
mktemp -p path/to/dir
URL解码
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
urldecode https://blog.geekgo.tech/memo/%e4%b8%80%e4%ba%9bshell%e5%91%bd%e4%bb%a4%e8%ae%b0%e5%bd%95/
二进制处理
查看二进制文件
hexdump -C <FILENAME>
截取二进制文件,利用dd
命令,skip参数跳过前n个字节,count参数控制读取长度
dd if=<INPUT_FILE> of=<OUTPUT_FILE> skip=16 bs=1 count=16
将十六进制文本转换为二进制文件
#从文件读取
xxd -r -p <HEX_TEXT_FILE> <OUTPUT_FILE>
# 或者也可以从标准输入读取
echo -n "53 61 6c 74 65 64 5f 3c" | xxd -r -p - <OUTPUT_FILE>
字节序反转
#输入输出均为十进制数
function byterev(){ printf "%d" 0x$(printf "%08x" $@ | tac -rs .. ); }
byterev 1234
网络
显示IP,有多个网卡的话可能会显示多个,使用空格分割
hostname -i
SSH远程执行命令
ssh user@host <COMMAND>
SSH远程执行本地shell脚本
ssh user@host "bash -s" < path/to/script
如果要远程后台执行一个长时间的任务,并且立刻返回,仅仅“nohup command &”是不行的,还需要把输入输出重定向
ssh -n user@host 'nohup <COMMAND> >/dev/null 2>&1 &'
设置静态IP地址
ip addr add 192.168.1.214/24 dev wlan0
设置默认路由
ip route add default via 192.168.1.1 dev wlan0
网速监控
sar -n DEV 1
Core Dump
查看 coredump 文件大小限制
ulimit -c
查看 coredump 文件生成位置和生成格式
sysctl -n kernel.core_pattern
# 或者
cat /proc/sys/kernel/core_pattern
临时修改 coredump 文件生成位置和生成格式
sudo sysctl -w kernel.core_pattern="/tmp/%e_core_dump.%p"
不生成 coredump 文件,修改配置文件 /etc/sysctl.d/50-coredump.conf
。
kernel.core_pattern=/dev/null
若要使修改后配置立即生效,执行
sudo sysctl -p /etc/sysctl.d/50-coredump.conf
列出所有生成的 coredump 文件(不包括 gdb 手动生成的)
coredumpctl list
查看 coredump 文件信息
coredumpctl info <PID/EXE>
使用 gdb 调试
coredumpctl gdb <PID/EXE>
GDB 内手动生成 coredump
generate-core-file
进程
通过程序名获取进程 PID
pidof firefox
查看运行中进程的环境变量
cat /proc/<PID>/environ | tr '\0' '\n'
# 或者
strings /proc/<PID>/environ
启动
查看系统开机启动耗时
systemd-analyze
查看开机各个进程启动耗时
systemd-analyze blame
查看启动日志
journalctl -b
参考:
- https://github.com/skywind3000/awesome-cheatsheets/blob/master/languages/bash.sh
- https://superuser.com/questions/449193/nohup-over-ssh-wont-return
- stackoverflow-How to decode URL-encoded string in shell
- https://www.baeldung.com/linux/managing-core-dumps
- https://wiki.archlinux.org/title/Core_dump
- https://en.wikipedia.org/wiki/Fork_bomb
- https://ma.ttias.be/show-the-environment-variables-of-a-running-process-in-linux/
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。