linux基本命令
1.创建新文件:touch 新文件名
2.显示当前所在目录:pwd
3.创建新目录:mkdir 新目录名
4.拷贝:cp 源文件 目的路径
5.移动:mv 源文件 目的路径
mv:不仅会移动文件数据,还会将inode索引节点也移动到目标文件,目标文件的inode号将会改变
cp : 只文件数据复制到目标文件中,不会复制inode索引节点,目标文件的inode号不变
6.删除:rm 文件名
7.查看可执行文件的位置:which 可执行文件名
8.解压:tar xvf 文件名.tar.gz
9.压缩:tar -cvf 压缩包名.tar.gz 文件名/
10.查找硬盘中的文件的位置:find 目录路径 -name 文件名字
find 目录路径 -name '*.cpp' //找出目录下(包括子目录)所有cpp文件
11.查找文件内的内容:grep 'hehe' -rn 目录路径 //在此路径中的所有文件里寻找字符串“hehe”,-r是递归,-n是显式行号
12.查看文件属性、权限、拥有者:ls -l
13.修改权限:chmod
不写身份时,默认是a
14.文件特殊权限:SUID
15.查看程序运行的时间或者某种命令运行的时间:time 执行的程序名或执行的命令
解释(1):real远大于user加上sys,因为find需要遍历各个目录,需要大量的I/O操作,而磁盘I/O通常是最慢的环节,因此大部分时间find进程都在等待磁盘I/O完成。
解释(2):再次运行的时候,发现real time变得很小了,应该是操作系统将刚才操作过的一些文件缓存了的缘故,因而大大减少了磁盘I/O。使用-p参数时,直接打印所需时间的数值,单位为秒,木有单位感觉怪怪的。
16.修改账户密码:passwd
17.查看输入的历史命令:history
18.linux默认有7个操作界面环境切换:[Ctrl]+[Alt]+[F1]~[F7]
纯命令行界面:tty1~tty6 终端
图形界面:tty7 终端
19.列出当前时刻所运行的进程的信息:ps
ps命令查找与进程相关的PID号:
ps a 显示现行终端下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps -e 此参数的效果和指定"A"参数相同。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系,会列出程序的完整路径。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况,包括内存使用率、
CPU使用率等。
ps -u 指定用户名。
ps x 显示所有程序,不以终端来区分。
其中最常用的为:
1)显示所有进程信息
ps -A
2)显示指定用户的信息
ps -u root
3)显示所有进程信息,连同命令行
ps -ef
4)ps与grep常用组合用法,查找特定进程
ps aux | grep ***
ps -ef | grep ***
20.实时监控(动态显示)进程各类信息:top
top还看可以实时看cpu使用率、内存使用情况等,类似于windows任务管理器:
其中,
- PID - 进程标示号
- USER - 进程所有者
- PR - 进程优先级
- NI - 进程优先级别数值
- VIRT - 进程占用的虚拟内存值
- RES - 进程占用的物理内存值
- SHR - 进程使用的共享内存值
- S - 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死
- %CPU - 进程占用的CPU使用率
- %MEM - 进程占用的物理内存百分比
- TIME+ - 进程启动后占用的总的CPU时间
- Command - 进程启动的启动命令名称
21.查看线程
1)top -H //加上-H这个选项,top的每一行就不是显示一个进程,而是一个线程
2)ps xH //查看所有的线程
3)ps -Lf 4306 //查看进程号为4306的所有线程
22.linux的七种运行等级(run level)
linux通过设置run level来规定系统开启不同服务:
run level 0:关机
run level 1:维护模式
run level 2:不含网络功能的纯命令行模式
run level 3:含有网络功能的纯命令行模式
run level 4:系统保留功能
run level 5:图形界面模式
run level 6:重启
可用 init 命令切换run level
23.关机:shutdown、poweroff、init 0
24.重启:reboot、init 6
25.swap分区:
1)swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的进程使用,那些被释放的空间可能来自一些很长时间没有什么操作的程进程,这些被释放的空间被临时保存到swap分区中,等到那些进程要运行时,再从swap分区中恢复保存的数据到内存中
2)传统的linux说明文件中特别有指定到“swap分区最好为物理内存的1.5到2倍之间”
26.创建新文件或修改文件时间:touch
27.查看文件系统的使用量:df -h //-h:显式出KB、MB、GB等单位
28.查看文件所占的磁盘空间:du -ah //-h:显式出KB、MB、GB等单位, -a:列出当前文件路径下所有文件和文件夹
29.建立文件链接:ln //不加-s为硬链接,加-s为符号链接(软链接)
- 硬链接:通过文件系统的inode来产生新的文件名,两个文件名均指向该inode,链接计数会增加(ls -l 中的第二列),硬链接的源文件删除了,由于inode还存在,所以硬链接还是能够打开
- 符号链接(软链接):相当于源文件的快捷方式,软链接指向源文件,链接计数不会增加,当源文件被删除,符号链接就打不开了,若被指向路径文件被重新创建,软链接又会重新恢复
- 软链接可以对一个不存在的文件名进行链接,硬链接不可以(其文件必须存在,inode必须存在)
- 软链接可以对目录进行链接,硬链接不可以
30.查看文件的内容:cat 文件名
用vim打开文件
31.查看文件的内容并用行号显示:nl 文件名
32.查看cpu信息:cat /proc/cpuinfo
33.查看内存信息:cat /proc/meminfo
34.将文件按行逆序显示:tac 文件名 //tac是cat反过来写
35.把文件每一行的内容逆序输出:rev 文件名
36.以某种方式对每行进行分割显示:cut -c1-3 文件名 //显示每行第1——第3字符
cut -f2,3 文件名 //显示每行第2、3字段的内容(默认字段间是以tab制表符分隔的)
cut -d 'g' -f 1 文件名 //以字符g分割字段,显示每行第1字段的内容
37.显示文件开头部分内容:head 参数 文件名
head -n 5 1.txt //显示前5行,没有参数默认显示前10行
head -c 5 1.txt //显示前5字节
head 1.txt 2.txt //显示多个文件
head -q 1.txt 2.txt //显示多个文件时去掉文件名
head -v 1.txt 2.txt //显示默认的前10行,并显示文件名
38.显示文件末尾部分内容:tail 参数 文件名
39.分页显示文件内容:more支持向后翻页,less支持向前翻页
40.查看端口占用情况:lsof -i: 端口号 //查看某端口使用情况
netstat -tunlp //netstat -tunlp用于显示tcp,udp的端口和进程等相关情况
netstat -tunlp | grep :22 |awk '{print $7}'| cut -d '/' -f 1 //查看使用22端口的进程号
netstat -natp | grep :22 -c //查看22端口的TCP连接数
41.查看单个进程允许打开的最大fd数量:ulimit -n
42.lsof命令用于列出当前系统打开的文件,包括常规文件、网络套接字等:lsof -u root -d txt //列出root用户打开的txt类型文件
43.查看系统的消息队列、信号量、共享内存等:ipcs -a //列出所有消息队列、信号量、共享内存
ipcs -q //-q,消息队列,-s,信号量,-m,共享内存
ipcs -l //列出系统限额
ipcs -u //列出当前使用量
44.抓包:tcpdump -nn -i eth0 icmp and host 192.168.1.1 //-nn:以数字的方式显示IP和端口号而不是主机名 -i:网口名 host:主机
45.查看系统IPC状态的指令:
ipcs -a //显示所有IPC,包括共享内存、信号量、消息队列 ipcs -m //共享内存 ipcs -s //信号量 ipcs -q //消息队列
46.清理IPC机制的指令:
ipcrm-m shmid //在最后一个共享内存从进程中分离完成后,删除共享内存标识符shmid
47.列出.o(目标文件).a(静态库文件) .so(动态库文件)文件中的符号(函数名,全局变量名)信息:nm 文件名
48.统计文件的字节数、行数
1)wc -c 文件名 //统计字节数
2)wc -l 文件名 //统计行数
3)wc -w 文件名 //统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
4)wc -m 文件名 //统计字符数
5)netstat -tunlp | grep ':22' | wc -l //占用22端口的进程的个数
49.在文件中查找出现最频繁的前2个字符串(如:ip地址):
cat 文件名 | sort | uniq - c | sort - k 1 - n - r | awk '{print $2} | head -n 2
cat 文件名 //查看文件内容
sort //sort命令是对于每一行的内容根据字典序(ASCII码)进行排序,这样可以保证重复的记录是相邻的
uniq - c //uniq表示合并相邻的重复记录,-c表示统计重复数,因为uniq -c只会合并相邻的记录,所以在使用该命令之前需要先排序
sort - k 1 - n - r //sort -k 1表示对于每行的第一个字段进行排序,-n表示sort按照数值大小进行从小到大排序而不是按ASCII(按ASCII排序,数值11会排在数值11的前面),-r表示排逆序
awk '{print $2} //选出第二列
head - n 2 //显示前2行
50.删除文件的空行:
这里的空行是指 '\n'
grep . 文件名 //显示出除空行外的文件行
grep . 文件名 > 新文件名 //将重定向到新文件
tr -s '\n' < 文件名 //显示出除空行外的文件行
sed '/^$/d' 文件名 //d代表删除该行,这条命令可显示出除空行外的文件行
sed -i '/^$/d' 文件名 //-i代表在文件中直接操作
sed '/^\s*$/d' 文件名 //这个命令还可将完全空格、tab等组成的空行删掉
重定向systemd服务的输出日志
https://www.baeldung.com/linux/redirect-systemd-output-to-file#2-direct-integration-for-newer-systemd-versions
shell for循环
for i in {1..5};do echo $i;done
posted on 2018-12-25 17:03 JoeChenzzz 阅读(331) 评论(0) 编辑 收藏 举报