需要在不断的积累中丰富自己,在不断的使用中强化自己的技能-felixzhang
养成一种习惯,坚持,自律,这样才能在自己的道路上走的更远-felixzhang
from CSDN-linux command learning:https://blog.csdn.net/qq_41394155/article/details/83472595
1、vi/vim
(1):set nu or :set number 设置显示行号
(2)vi/vim +26 sample.txt 打开sample.txt,光标在第26行处显示;
(3) :%s/desktop/laptop/g 将在整个文件中的“desktop”用laptop替换
2、ps -ef
NI:表示进程的nice值;PRI表示进程的优先级。
3、修改U盘卷标
sudo e2label /dev/sda1 newLabelName
4、MD5
MD5算法常常用来验证网络文件传输的完整性,防止文件被人篡改。全称:报文摘要算法(Message-Digest Algorithem5)此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位的“指纹”(或者称为报文摘要),不同的文件产生相同的报文摘要的可能性非常小。命令如下:
md5sum filename > result.md5
filename和result可以相同,也可以不同;result.md5的内容:指纹 filename。result.md5的后缀也可以不是md5。可以使用>>使用追加的方式产生md5值。
md5sum *iso > iso.md5 多个文件同时产生md5值
将下载的文件file和该文件的file.md5报文摘要放在同一个目录下,然后用下列命令:
Md5sum –c file.md5
也可以比较文件发送前的md5值和发送后的md5值是否一致
5、查找命令
Which:用来查看可执行文件的位置;
Locate:在数据库中查,数据库大致每天更新一次;
Whereis:可以找到可执行命令和man page;
Find:根据条件查找。
6、可以通过命令“tty”查看当前shell对应于那个tty
7、kill–l 查看系统中有哪些signal
8、查看和更改printk日志级别
Cat/proc/sys/kernel/printk
4 4 1 7
Firstnumber:当前控制台日志级别
Secondnumber:未明确指定日志级别的默认消息日志界别
Thirdnumber:最小控制台日志级别
Forthnumber:引导时默认的控制台日志界别
日志级别越小,优先级越大,日志级别小于控制台的日志才会输出;
修改控制台日志级别:
echo8 > /proc/sys/kernel/printk
9、wc统计命令:打印文本行数、单词数、字节数;
10、du命令:显示每个文件和目录磁盘使用空间的情况
11、命令后面加&,表示后台执行
12、shell脚本
‘string’单引号—>单一字符,代表变量的$没有作用;”string”双引号->代表的$起作用,单一字符串;`command`反引号->指命令;seq:用于产生从某个数到另外一个数之间的所有整数。%o以8进制输出整数,不带O前缀;%03o是输出3位8进制整数,不足3位的在前面补0;echo –n不换行输出,echo –e 处理特殊字符,如果字符串中出现特殊字符,不会当成一般字符输出。
13、stty
stty –F/dev/ttyS0 speed 115200来测试串口通信。
(1)通过上面的命令分别设置ttyS0和ttyS1
(2)cat /dev/ttyS0 &
(3)echo hello> /dev/ttyS1
(4)把(2)和(3)反过来实验
14、硬链接和软连接
硬链接:ln P1 P2
软连接:ln –s P1P2
P1:目标文件;P2:链接文件。
15、objdump可以用来反汇编:objdump –S hello.o
16、lshw查看硬件列表
17、pkill、kill、killall杀死进程
(1)pkill和killall差不多,都是通过进程名字杀死进程
(2)kill用于杀死指定PID的进程,kill -9 PID用于强制杀死进程
18、绑核
(1)显示进程运行的CPU
taskset -p pid
注意,此命令返回的是十六进制的,转换成二进制后,每一位对应一个逻辑CPU,低位是0号CPU,依次类推。如果每个位置上是1,表示该进程绑定了该CPU。例如,0101就表示进程绑定在了0号和3号逻辑CPU上了
(2)绑核设定
taskset -pc 3 pid 表示将进程pid绑定到第3个核上(注:不用将3弄成二进制的)
taskset -c 3 command 表示执行command命令,并将command启动的进程绑定到第3个核上。
19、如果想要实现某个进程/线程独占某个核,就要使用cpuset
命令去实现
# mkdir /dev/cpuset
# mount -t cpuset cpuset /dev/cpuset
# cd /dev/cpuset
# mkdir prodset # create a cpuset called "prodset"
# cd prodset
# echo 7-10 > cpus # assign CPUs 7-10
# echo 1 > cpu_exclusive # make prodset exclusive
# echo 1159 > tasks # assign PID 1159 to prodset
20、time命令:统计命令执行花费的总时间
time ls
anaconda-ks.cfg install.log install.log.syslog satools text
real 0m0.009s
user 0m0.002s
sys 0m0.007s
输出的信息分别显示了该命令所花费的real时间、user时间和sys时间。
- real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
- user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
- sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
21、file命令查看文件类型,file “filename”,ELF是可执行文件
22、readelf -h 可执行文件名用于查看可执行文件的头部信息
23、gcc -g
如果想用调试器执行一个可执行文件, 在用gcc编译时必须加上-g选项:
gcc -o sum sum.c -g
加上-g选项以后,gcc在编译是会做以下额外的操作:
1. 创建符号表,符号表包含了程序中使用的变量名称的列表。
2. 关闭所有的优化机制,以便程序执行过程中严格按照原来的C代码进行。
24、反汇编
#gcc –g stackframe.c –o stackframe (编译)
#objdump –dS stackframe > stackframe.S (反汇编)
25、dd命令
【1】sudo dd if=[输入] of=[输出]
eg:
sudo dd if=/dev/sda of=/dev/sdb
其中/dev/sda为硬盘A,/dev/sdb为硬盘B
【2】 查看dd执行进度:
在一个shell里面执行dd命令,在另一个shell里面执行下面的方法,然后可以在执行dd命令的shell中看到dd进度
(1)方法1:watch -n 5 pkill -USR1 ^dd$
(2)方法2:watch -n 5 killall -USR1 dd
(3)方法3:while killall -USR1 dd; do sleep 5; done
(4)方法4:while (ps auxww |grep " dd " |grep -v grep |awk '{print $2}' |while read pid; do kill -USR1 $pid; done) ; do sleep 5; done
man dd可以看到这样的解释:“Sending a USR1 signal to a running 'dd' process makes it print I/O sta‐
tistics to standard error and then resume copying.”只要给dd
发送USR1信号,它就会在标准错误输出中输出I/O数据,并继续复制。这样的话就实现了当前进度的输出。
使用上面方法可以看到如下的进度提示:
68411724288 bytes (68 GB) copied, 9134.46 s, 7.5 MB/s
133709641+0 records in//前面的就是柱面号,使用dd拷贝部分数据的时候,确保fdisk查看的end柱面号已经被dd完
133709641+0 records out
https://blog.csdn.net/puppylpg/article/details/51290363
dd部分数据
dd if=/dev/sda of=/dev/sdb bs=512 count=1
bs指定扇区的大小,count指示dd多少个扇区,可以通过fdisk查看需要dd的end扇区,如果只dd一个分区的一部分会出现cannot access错误,需要dd整个分区。
26、watch命令
周期性的执行程序,eg:
watch -n 1 date
1秒钟显示一次日期
27、修改进程的优先级
(1)nice命令,指定未运行进程(程序)的nice值
nice -n -5 /usr/local/mysql/bin/mysqld_safe &
(2)renice,对正在运行的进程更改nice值
renice -5 -p 5200
#PID为5200的进程nice设为-5
(3)top命令更改
#进入top后按“r”–>输入进程PID–>输入nice值
(4)htop命令,F8、F9
28、查看DRAM速率
dmidecode -t memory
其中speed指示的就是DRAM的速率
dmidecode还可以查看:查询BIOS、系统、主板、处理器、内存、缓存等信息,具体可以查看man
bios system baseboard chassis processor memory Cache connector slot
https://blog.csdn.net/u011641885/article/details/47010489