常用的shell命令
常用的shell命令: find
, cat
根据文件inode信息查找文件
文件系统错误,有错误inode信息
1
EXT4-fs (sda7): Delayed block allocation failed for inode 23596895 at logical offset 673 with max blocks 1 with error 117
查找文件
1
find /home/ -inum 23596895 -print
sda7挂载在home目录下。
创建一个不能登录的账户
创建一个git账户,不需要其登录系统
1 | useradd -s /bin/false -M git |
-s /bin/false
:禁止login选项,用户无法登录且不会有任何提示-M
:不创建用户Home目录
字符串转二进制
1 | echo 001122334455 | xxd -r -ps > test // 6 个字节 |
xxd
:用于用二进制或十六进制显示文件的内容-r
:把xxd的十六进制输出内容转换回原文件的二进制内容-ps
:以postscript的连续十六进制转储输出,这也叫做纯十六进制转储
查看中断与CPU的绑定关系
1 | cat /proc/interrupts | grep intel | cut -d: -f1 | while read i; do echo -ne irq":$i\t bind_cpu: "; cat /proc/irq/$i/smp_affinity_list; done | sort -n -t' ' -k3 |
内存读写速度测试
1 | dd if=/dev/zero of=/dev/null bs=1M count=1024 |
查看当前CPU运行频率
1 | watch -n 0.1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\"" |
文件指定行数的字符大写转小写
1 | find -name "*.md" | xargs sed -i '4,9s/.*/\L&/' |
删除所有文件行尾空格
1 | find source/_posts/ -name "*.md" | xargs sed -i 's/[ ]*$//g' |
进程CPU占有率排序
1 | ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu |
判断进程在哪个CPU核运行的方法
ps
1 | ps -o pid,psr,cmd -p <pid> |
PSR
: 进程分配的CPU id
top
top
命令也可以显示CPU被分配给哪个进程
- 进入
top
后,按f
键,出现Fields Management管理界面,(空格键选中)选择P
选项(P = Last Used Cpu (SMP)) - top界面中目前使用的CPU将出现在”P”(或“PSR”)列下
1 | top -p <pid> |
查看单独一个进程的信息
杀死僵尸进程
1 | kill -HUP <PID> |
iptux–局域网数据传输–飞秋
Linux中的iptux与window中的飞秋可以相互进行文件传输
1 | sudo apt install iptux |
调整防火墙以允许使用TCP/UDP
2425
端口1
sudo ufw allow 2425
中文乱码
设置编码方式:cp936
(orgbk
)工具栏设置: Tools -> Preferences -> System -> Candidate network conding:
cp936
配置文件
- 配置文件:
.iptux/config.json
- 日志:
.config/iptux/
- 配置文件:
数据销毁和日志清理
bleachbit
bleachbit 是一款开源免费的系统清理工具,功能类似 Windows 平台的 CCleaner
shred
shred 功能简单的说就是涂鸦,把一个文件用随机的字符码篡改的一塌糊涂。其宗旨就是更安全地帮助删除一个机密文件
wipe
可安全地删除磁存储器中的文件,后续无法恢复已删除文件或目录的内容。
CPU信息
- lscpu
- lshw
1 | lscpu |
socket
: 主板上插CPU槽的数量core
: CPU上的核数(物理核)thread
: core上的硬件线程数(逻辑核)
nproc
获取可用CPU的数量
1 | nproc |
apt build-dep
1 | sudo apt-get build-dep mesa |
build-dep causes apt-get to install/remove packages in an attempt to satisfy the build dependencies for a source package. By default the dependencies are satisfied to build the package natively. If desired a host-architecture can be specified with the
--host-architecture
option instead.
根据源码编译时所需的关系包进行搜索并下载安装.建立要编译软件的环境.
1 | sudo apt build-dep mesa |
tasksel
tasksel
命令是用来安装“任务”的,任务就是一些软件的组合,比如LAMP这个任务,就是由apache,php,MySQL等软件包组成,tasksel安装任务就是安装一系列的软件包而已。
通过tasksel可以直接在server版,进行ubuntu桌面的安装
ubuntu Desktop
1 | sudo apt update |
tasksel选择ubuntu Desktop进行安装,等待安装完成
1 | sudo tasksel install ubuntu-desktop |
1 | $tasksel --list-tasks |
find
1 | [root@linfeng etc]# find . -type f -name "*" | xargs grep "root/init.sh" |
-type f
: 表示只找文件-name "xxx"
: 表示查找特定文件;也可以不写,表示找所有文件
批量修改文件名后缀
mv ./htxynl.f90 ./htxynl.f77
1 | find . -name "*.f90" | awk -F "." '{print $2}' | xargs -i -t mv .{}.f90 .{}.f77 |
cat
cat和重定向进行写文件操作
1 | =====>$cat > test.sh << EOF |
结束方式:
- 输入
EOF
,最好使用EOF - 使用
Ctrl+d
写入方式:
>
: 以覆盖文件内容的方式,若此文件不存在,则创建>>
: 以追加的方式写入文件
tee
1 | make USE_NINJA=false USE_CLANG_PLATFORM_BUILD=false 2>&1 | tee build.log |
ssh
跨服务器拷贝文件
1 | xbin="u-boot-with-spl-mbr-gpt.bin" |
ssh的key值
- 权限必须是
600
1
chmod 600 ~/.ssh/authorized_keys
- 添加key值
1
ssh-add ~/.ssh/authorized_keys
- 查看生效key值
1
ssh-add -l
- 测试key值
1
ssh -T git@github.com
- 免密登录
1
ssh-copy-id ssh name@ip
- 使用多个key值
man ssh_config
1 | cp /etc/ssh/ssh_config ~/.ssh/config |
编辑~/.ssh/config
1 | ... |
ssh登录到远程的特定目录
1 | ssh -t xx@192.168.1.1 "cd /home/xx/test; bash" |
或
1 | ssh -t xx@192.168.1.1 "cd /home/xx/test && bash" |
-t
:标志用于强制分配伪终端
通过root账户ssh登录
在ubuntu系统中默认不能使用root账户进行ssh登录
开启root账户登录ssh,打开/etc/ssh/sshd_config
配置
1 | PermitRootLogin yes |
默认配置
#PermitRootLogin prohibit-password
重启ssh服务
1 | sudo systemctl restart sshd.service |
ssh数据的压缩传输
1 | ssh -CX xxx@192.168.1.1 |
-C
: 压缩传输模式-X
: 启用X11转发,远程打开使用图形应用
tftp
开发板(busybox)
1 | tftp -g -r user/xxxx/system.tar 192.168.4.13 |
tftp的服务器(PC):
1 | /etc/default/tftpd-hpa |
file: /etc/default/tftpd-hpa
cpio
解压,制作 ramdisk
解压
1
2
3
4gunzip rootfs.cpio.gz
mkdir tmp
cd tmp
cpio -i -F ../rootfs.cpiocode: unzip_ramdisk.sh
制作
1
find . | cpio -o -Hnewc |gzip -9 > ../image.cpio.gz
-H
: 选项指定打包文件的具体格式,要生成init ramfs,只能用newc
格式
minicom
记录串口的输出日志:
1 | !/bin/sh |
ttyUSB0权限问题
每次使用串口工具时,需要sudo权限,为了普通用户方便可以通过以下命令解决:
1 | sudo usermod -a -G dialout ${USER} |
设置后需要重启电脑,使用minicom时不用sudo
串口输出增加时间戳:
1 | Ctrl + a ; n |
串口打印内存信息:
1 | Ctrl + a; f; m |
Ctrl + a; f
(send break)进行发送命令,m
查看当前内存状态的命令
类似与:echo m > /proc/sysrq-trigger
break signal | |
---|---|
m | 查看当前内存状态的命令 |
内核提供接口
drivers/tty/sysrq.c
,通过按键的方式获取内核的调试信息
1 | static struct sysrq_key_op *sysrq_key_table[36] = { |
enable the magic SysRq key
https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
配置内核时,您需要对’Magic Sysrq键(CONFIG_MAGIC_SYSRQ=y)。在运行使用SYSRQ的内核时,/proc/sys/kernel/sysrq
控制通过SYSRQ键调用允许的函数。该文件中的默认值由CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE设置,该值默认为1。
/proc/proc/sys/kernel/sysrq
中可能值的列表:
- 0 - disable sysrq completely
- 1 - enable all functions of sysrq
- 参考配置
1 | CONFIG_MAGIC_SYSRQ=y |
kermit文件传输
- 安装ckermit
1 | sudo apt install ckermit |
注:ubuntu20.04没有ckermit,可以手动下载ubuntu18.04的版本安装,自测可用。
- 配置kermit
在配置文件/etc/kermit/kermrc
中追加以下配置:
1 | set line /dev/ttyUSB0 |
- 文件发送
快捷键:Ctrl + a + s
,选择kermit
sshfs
1 | sudo sshfs xxx@192.168.1.2:/home_back/xxx/work/aaa /home/user/aaa -o gid=1000,uid=1000,allow_other |
md5sum — 字符串
1 | echo -n '123456' | md5sum |
查看硬盘型号和序列号
1 | sudo hdparm -i /dev/sda |
获取计算机硬件信息
1 | sudo dmidecode |
dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。
格式化xml
1 | xmllint --format run_xunit.xml |
在vim中直接敲xml,进行格式化
tldr
Too Long Don’t Read!
查找各种命令的常用例子
1 | sudo apt install tldr |
1 | tldr ps |
top
命令相关参数
参数 | 作用 |
---|---|
1 | 显示每个CPU的运行情况 |
z | 进入高亮模式(终端红色字体) |
b | 高亮显示正在运行的命令 |
c | 显示command列的所有信息,包括参数 |
t | 更直观的方式展示task/cpu信息,像htop一样 |
m | 更直观的方式展示memory信息,像htop一样 |
M | 根据内存使用率进行排序,%MEM列 |
P | 根据CPU使用率进行排序,%CPU列 |
sed
参考:sed命令详解
将当前目录(包括子目录)文件中的特定字符串并进行替换
1 | sed -i s/jpeg_encode.h/jpeg_codec.h/g `grep jpeg_encode.h -rl --include="*.c" ./` |
-i
:表示操作的是文件反引号
:表示将grep命令的的结果作为操作文件
当前目录文件替换
1 | sed -i s/xxxx/yyyy/g ./*.txt |
pkg-config
用于获得某一个库/模块的所有编译相关的信息
1 | pkg-config --libs --cflags gl |
pkg-config默认的搜索路径
1 | pkg-config --variable pc_path pkg-config |
PKG_CONFIG_PATH
配置pkgconfig文件路径
1 | echo $PKG_CONFIG_PATH |
运行时库的连接
- 在环境变量
LD_LIBRARY_PATH
中指明库的搜索路径。 - 在
/etc/ld.so.conf
文件中添加库的搜索路径。
LD_LIBRARY_PATH
配置运行时加载库的路径
1 | echo $LD_LIBRARY_PATH |
命令行直接打开浏览器进入指定网页
1 | $firefox --new-window https://winddoing.github.io |
命令行直接打开文件管理(ubuntu)
1 | $nautilus |
参考
- minicom中文手册