一些Shell命令记录

图片来源: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

参考:

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注