Linux就该这么学(一)

Linux作为一个十分优秀的操作系统,优秀的程序员应该熟练的掌握Linux,let’s do it.孰能生巧。

常用系统工作命令

  • 1、echo

    echo命令用于在终端输出字符串或变量提取后的值,格式为 echo [字符串|$变量]

  • 2、date

    date命令用于显示及设置系统的时间或日期,格式为 date [选项] [+指定的格式]

    date "+%j"显示今年中的第几天。
    
  • 3、reboot

  • 4、poweroff

  • 5、wget

    wget命令用于在终端中下载网络文件,格式为 wget [参数] 下载地址

|参数|作用|
|:----|:----|
|-b|后台下载模式|
|-P|下载到指定目录|
|-t|最大尝试次数|
|-c|断点续传|
|-p|下载页面内所有资源,包括图片、视频等|
|-r|递归下载|
  • 6、ps命令

    ps命令用于产看系统中的进程状态,格式为 ps [参数]

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程

Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中,有五种常见的运行状态。

  • R(运行):进程正在运行或在运行队列中等待。

  • S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。

  • D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

  • Z(僵死):进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放。

  • T(停止):进程收到停止信号后停止运行。

  • 7、top

    top命令用于动态地监视进程活动与系统负载等信息。

  • 8、pidof

    pidof命令用于查询某个指定服务进程的PID值,格式为 pidof [参数] [服务名称]

  • 9、kill

    kill命令用于终止某个PID的服务进程,格式为 kill [参数] [进程PID]

  • 10、killall

    killall命令用于终止某个指定名称的服务所对应的全部进程,格式为 killall [参数][进程名称]

    通常来说,复杂的软件服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时就可以使用killall命令来批量结束某个服务程序带有的全部进程。

    如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾加上一个&符号,这样命令进入系统的后台来执行。

系统状态检测命令

  • 1、ifconfig

    ifconfig命令用于获取网卡配置与网络状态信息,格式为 ifconfig [网络设备][参数]

  • 2、uname

    uname命令用于查看系统内核与系统版本等信息,格式为 uname [-a]

  • 3、uptime

    uptime用于查看系统的负载信息,格式为 uptime

  • 4、free

    free用于显示当前系统中内存的使用量信息,格式为 free [-h]

  • 5、who

    who用于查看当前登入主机的用户终端信息,格式为 who [参数]

  • 6、last

    last命令用于查看所有系统的登录记录,格式为 last [参数]

  • 7、history

    history命令用于显示历史执行过的命令,格式为 history [-c], -c表示清楚历史执行的命令。

  • 8、sosreport

    sosreport命令用于收集系统配置及框架信息并输出诊断文档,格式为 sosreport

    文本文件编辑命令

  • 1、cat

    cat命令用于查看纯文本(内容较少的),格式为 cat [选项][文件],如果想要显示行号的话,在cat后面添加 -n

  • 2、more

    more命令用于产看纯文本文件(内容较多),格式为 more [选项]文件

  • 3、head

    head命令用于查看纯文本文档的前N行,格式为 head [选项][文件]

    head -n #Line filename
    
  • 4、tail

    tail命令用来产看纯文本文档的后N行或持续刷新内容,格式为 tail [选项][文件]

    tail -n #Line filename
    

    tail还有一个功能是可以持续刷新一个文件的内容。

    tail -f filename
    
  • 5、 tr

    tr命令用于替换文本文件中的字符,格式为 tr [原始字符][目标字符]

  • 6、 wc

    wc命令用于统计指定文本的行数、字数、字节数,格式为 wc[参数] 文本

参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
  • 7、 stat

    stat命令用于查看文件的具体存储信息和时间等信息,格式为 stat 文件名称

  • 8、 cut

    cut命令用于按”列”提取文本字符,格式为 cut[参数] 文本。使用-f参数来设置需要产看的列数,使用-d参数来设置间隔符号

    cut -d: -f1 filename(输出第一列,间隔符号是":")
    
  • 9、 diff

    diff命令用于比较多个文本文件的差异,格式为 diff[参数] 文件

    使用 –brief 参数来确定两个文件是否不同。

    使用 -c 来详细比较文件的差异之处。

文件目录管理命令

  • 1、touch

    touch命令用于创建空白文件或设置文件的时间,格式为 touch[选项][文件]

参数 作用
-a 仅修改“读取时间”
-m 仅修改“修改时间”
-d 同时修改两个时间
  • 2、mkdir

    mkdir命令用于创建空白的目录,格式为 mkdir[选项] 目录

    通过-p参数来递归穿件文件目录。

  • 3、cp

    cp命令用于复制文件或目录,格式为 cp[选项] 源文件 目标文件

参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr
  • 4、mv

    mv命令用于剪切文件或将文件重命名,格式为 mv[选项] 源文件 [目标路径|目标文件名]

  • 5、rm

    rm命令用于删除文件或目录, rm[选项] 文件

  • 6、dd

    dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为 dd[参数]

参数 作用
if 输入的文件名称
of 输出的文件名称
bs 设置每个”块”的大小
count 设置要复制”块”的个数

除此之外,dd命令也可以直接制作镜像文件。

  • 7、file

    file命令用于查看文件的类型,格式为 file 文件名

打包压缩与搜索命令

  • 1、tar命令

    tar命令用于对文件进行打包压缩或解压,格式为 tar[选项][文件]

参数 作用
-c 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip压缩或解压
-j 用bzip2压缩或解压
-v 显示压缩或解压过程
-f 目标文件名
-p 保留原始的权限与属性
-P 使用绝对路径来压缩
-C 指定解压到的目录
tar -czvf x.tar.gz 压缩
tar -xzvf x.tar.gz 解压
  • 2、grep

    grep命令用于在文件中执行关键词搜索,并显示匹配的结果,格式为 grep[选项][文件]

参数 命令
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的行数
-i 忽略大小写
-n 显示行号
-v 反向选择–仅列出没有”关键词”的行
  • 3、find

    find命令用于按照指定条件来查找文件,find[查找路径] 寻找条件 操作

参数 作用
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但是比f2旧的文件
–type b/d/c/p/l/f 匹配文件类型(依次为块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec …… {}; 后面可跟用于进一步处理搜索结果的命令

如:在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录, {}表示每一个文件,且必须以“”结尾。

find / -user linuxprobe -exec cp -a {} /root/findresults