以下内容都是我从各个地方转载学习到的,有的直接给了链接。如有侵权,请联系。
& 和 && 和|和 || 区别
(1)& 实现命令后台执行。
(2)&& 表示前一条命令执行成功时,才执行第二条命令。
(3)| 管道,执行完最左边的命令后,作为输入执行第二条命令。
cat /foo/a.txt | grep "hello"先执行 cat 打印文件,然后找到含有 “hello”的行。
(4) || 上一条命令执行失败后,才执行第二条命令。
单引号、双引号、反向单引号的区别
(1)单引号:引号中的内容不会转义,直接打印输出。
>>echo 'hello\n' hello\n(2)双引号:引号中的内容根据需要,会进行转义输出。
>>echo -e "hello\th" hello h >>echo -e "\"hello\"" "hello"(3)反向单引号:``,实现的是``中的命令作为输入,在输出。
>>echo -e `echo "hello\th"` hello h此外,可以利用$实现对变量的引用。
建立的a.sh文件:
#!/bin/sh read name echo "$name It is a test." >>sh a.sh foo foo It is test.> 和 >> 和 < 区别
> 将标准输出的内容导入 a.txt文件中
>> 追加命令,> 会覆盖源文件。>> 是追加。
< 标准输入:不太明白。输入重定向到一个程序??
(1)echo 用于字符串的输出 类似于print()
详情可见:https://www.cnblogs.com/Spiro-K/p/6360489.html
(2)scp 实现两台服务器之间的文件传输。
scp /home/foo/test.txt root@100.0.0.0:/home/foo_1/test需要root@100.0.0.0的登录密码。
此外,这是从内网向外网进行传输,可以直接利用这样的方式实现。但是外网向内网传输,这样操作不可行。因为内网会有屏障。因为scp命令是基于ssh服务的。因此,可以建立基于ssh服务的反向隧道,从而实现外网向内网传输。
可以参考:链接。
进程相关的命令
参考:https://blog.csdn.net/dongyanxia1000/article/details/62042065
(1)jobs 查看当前用户的进程个数
+(加号)表示是一个当前的作业,
- (减号)表示是一个当前作业之后的一个作业
jobs -l #可显示所有任务的PID注意[1]不是进程号,只是表示优先顺序的一种方式。 -l 可以显示PID。
(2) bg 将挂起的进程,重新启动
bg %1 # 1是jobs显示的进程先后关系,不是进程的PID(3)pg 将服务从后台调至前台运行。
pg %1 # 1是jobs显示的进程先后关系,不是进程的PID(4)ctrl+z 可以将前台服务挂起。等待响应。ctrl+c 直接终止正在运行中的进程
终止程序的几种方法:https://www.cnblogs.com/pejsidney/p/8932707.html
(5)将命令放在后台进行运行,可以利用 "&"来实现。
scp /home/foo/test.txt root@100.0.0.0:/home/foo_1/test &(6) ps 查看当前时间节点内运行的进程
ps -aux # 显示所有包含其他使用者的进程 ps -a #显示同一终端下的所有程序 ps -au #显示较详细的资讯 ps x # 显示所有程序,不以终端机来区分常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
比如:ps -aux | grep watch (查看watch命令的情况)
(7)top 能够实时显示系统中各个进程的资源占用状况,类似于资源管理器。
top显示的参数详解:https://www.cnblogs.com/niuben/p/12017242.html
top中第一行显示的就是 uptime的情况。也就是服务器的基本情况。
(8)uptime :显示服务器的基本情况。详情:https://www.cnblogs.com/ftl1012/p/uptime.html
服务器时间:13:29:09 服务器运行时长:299 days 当前用户数:2 当前负载均衡 load average 0.03, 0.02, 0.04(9)kill 杀死一个进程
kill -9 PID详情可见:https://blog.csdn.net/guo_guo_cai/article/details/78499477
9是信号编号,信号编号是一种给进程发送的指令编号(里面涵盖一些计算机指令)。-9的含义是: sigkill -15的含义是sigterm.sigterm多半是会被阻塞的、忽略。sigkill会强制终止。
文件相关操作
(1)cat 显示文件的主要内容
cat /file_name还可以向文件中增加一些东西,生成b.txt文件。
(2)sort 按照一定的顺序,将文件按照行排序。然后排序规则是按照列进行的。【不改变源文件】
(3)uniq 重复行统计,统计重复的过程中,统计的是相邻行,不相邻的行即使是重复的也不会按照重复的情况来处理。【不改变源文件】
sort和uniq的相关示例可参考:https://www.linuxprobe.com/linux-uniq-student.html
(4)wc 统计作用。 统计行数、单词数字、字节数。
>>wc a.txt 1 1 10 a.txt >> wc -l a.txt 仅输出行数(5)cut 统计文件的情况,按照一定的顺序匹配,将匹配后的列进行输出。
(6)grep 匹配作用。 匹配某个的单词是否在文本中出现,如果出现,则输出这一行。只要出现单词即可。
>>grep "cat" a.txt hello cat cat(7)vi/vim
vim是在vi基础上发展的。可以认为是 创建/进入 一个可以编辑的文本。
一共有三种模式:(1)刚开始进入的只读模式 (2)i 插入模式,可以进行编写 (3):退出模式
退出模型中 (1):wq 保存退出 (2):q! 强制退出 不保存 (3):q 退出,在没有做更改的时候直接退出,若更改了会提醒。
(8)cp 用于复制文件或者目录 详见:https://www.runoob.com/linux/linux-comm-cp.html
cp -r 复制目录和其下的所有子目录和文件 cp -d 保留连接文件,类似于桌面快捷方式 cp -i 覆盖目标文件时,是否给出提示(9)mv 用于移动目录或者文件 https://www.runoob.com/linux/linux-comm-mv.html
mv 可以用于改名,将a.txt改成b.txt,一般情况下,liunux不怎么看后缀名。linux会将其认为就是一个文件的名字而已。
mv a.txt b.txt mv -i 有同名询问是否覆盖 mv -f 不询问直接覆盖(10)rm 删除文件或者目录(rm命令删除,则无法恢复,所以必须格外小心地使用该命令)
rm -f rm -r # 删除目录及其中的所有东西 如果直接删除 rm test/ 删除不掉 rm -i 删除前进行询问(11)zip/unzip 打包和解包文件
dpkg 命令 解包.deb类型
tar命令 压缩文件 【zip和tar不同,要注意】
zip [-r] name.zip test/ # 压缩 test/和其目录下的所有内容 zip a.zip a.txt # 将单个文件进行压缩(12) awk 处理文本文件 详见:https://www.cnblogs.com/virgosnail/p/11103651.html
awk '{condition} action' filname注意:必须是单引号
查看系统存储状态
(1)df:查看系统磁盘使用情况。是以块为单位,进行查看的。因为磁盘的存储结构,就是以块进行的。(操作系统内容)
df -h # 以GB显示 df -i # 以inode信息显示(2)du 查看目录/文件夹的大小。类似于查看文件夹的属性中的大小信息。会进行相应的罗列。
注意不会查看此目录下的文件的大小(如 .txt等)
-h 以kb -a 显示所有文件信息(包括单个文件) 以及文件夹下的最深大小 -b 以byte查看开机状态
(1)dmesg 查看开机状态中的信息
dmesg | grep TCP # 查看TCP的相关情况也可以通过 cat /var/log/dmesg 来查看,开机时会将信息保存此位置。
查看设备信息
(1)lspci 查看在总线PCI上的设备信息。
查看GPU信息:
lspci | grep -i nvidia(2)nvidia-smi 查看GPU显存情况
查看网络情况
(1)netstat 查看网络状态,包括TCP Ip等
详细可见:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
(2)watch 监测一个命令的运行结果,来监测想要结果的变化情况。详情见:https://www.cnblogs.com/ftl1012/p/watch.html
watch -n 1 -d "uptime"10秒输出一次系统的均衡负载情况。双引号是想要监控的命令。前面是watch所带的参数情况。
(3)who 显示当前登录系统的用户