JoeChenzzz

导航

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编辑  收藏  举报