Linux命令

前言

作为服务器开发,平时开发经常用到的Linux命令不多,但是还是要对linux多了解一些,这样出现问题至少有一个解决思路。

systemctl

最近项目中经常用到systemd来启动进程,所以先了解下。

  • enable xxx.service
    设置开机自动启动
  • disable xxx.service
    取消自动启动
  • status xxx.service
    查看服务的状态
  • list-units [--type=service]
    查看所有启动的服务
  • start/stop/restart xxx.service
    根据脚本中的命令启动/停止/重启服务
  • daemon-reload
    重载所有的服务,更新脚本之后不会立即生效,要调用该命令
  • list-dependencies xxx.service
    列出服务的依赖关系,
  • list-unit-files [--type=service]
    列出所有配置文件以及他们的状态。状态有四种:enabled(已建立启动链接);disabled(没建立启动链接);static(该配置文件没有[Install]部分(无法执行),只能作为其他配置文件的依赖);masked(该配置文件被禁止建立启动链接)
  • Service配置文件
    service的配置文件分为三个部分:
    1. Unit:
    • Description : 服务的简单描述
    • Documentation : 服务文档
    • Before、After: 定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。
    • Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。
    • Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。
    1. Service:
    • Type告诉systemd这个服务的类型,从而采取不同的策略执行。
      • simple(默认值) systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
      • forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
      • oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
      • notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
      • dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
      • idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。
    • PIDFile:pid文件路径
    • ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。
    • ExecReload:指定单元停止时执行的命令或者脚本。
    • ExecStop:指定单元停止时执行的命令或者脚本。
    • PrivateTmp:True表示给服务分配独立的临时空间
    • Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。
    • RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。
    1. Install
    • Alias:为单元提供一个空间分离的附加名字。
    • RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从 Require获得依赖信息。
    • WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。
      *Also:指出和单元一起安装或者被协助的单元。
    • DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。

nc

nc可以通过TCP和UDP在网络中读写数据,

  • -g
    设置路由器跃程通信网关,最多设置8个;
  • -G
    设置来源路由指向器,其数值为4的倍数;
  • -h
    在线帮助;
  • -i
    设置时间间隔,以便传送信息及扫描通信端口,单位为秒
  • -l
    使用监听模式,监控传入的资料。
  • -n
    直接使用ip地址,而不通过域名服务器。
  • -o
    把往来传输的数据以16进制字码倾倒成该文件保存;
  • -p
    设置本地主机使用的通信端口
  • -r ?
    指定源端口和目的端口都进行随机的选择;
  • -s
    设置本地主机送出数据包的IP地址,可以伪装ip
  • -u
    使用UDP传输协议;
  • -v
    显示指令执行过程;
  • -w
    设置等待连线的时间,单位为秒
  • -z
    使用0输入/输出模式,连接即断开,只在扫描通信端口时使用。
使用nc简单实现小功能
  • 聊天服务器
    服务器: nc -l 端口号
    客户端: nc 服务器ip 端口号
    双方在命令行的输入会显示在对方的屏幕
  • 传输文件
    要接收或者要发送的启动好端口 nc -l port > trans.txt
    另一方连接发送或者接收 nc ip port < trans.txt
  • 端口扫描
    nc -z -v -n 172.31.100.7 21-25
    扫描指定ip的指定端口
tcpdump

tcpdump用来监听端口,抓取相应的包。

  • -c
    指定抓取包的数量。
  • -i
    使用指定的网络截面送出数据包
  • -d
    把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  • -dd
    把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  • -ddd
    把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  • -r file
    从指定的文件读取数据包数据。
  • -w file
    把数据包数据写入指定的文件
  • host ip/域名 [and (host1 or host2)]
    监听发给和来自该主机的数据包 [监听该主机与host1或者host2之间的通信包(注意转义)]
  • port number
    监听对应主机的该端口
  • src/dst
    只截获来自/发送给目的地址的数据包
sar

sar命令是比较全面的linux性能统计分析工具,命令的格式为sar [options] [-A] [-o file] t [n],[]中代表可以省略,t代表采样的间隔,最后的n代表统计的次数。options中包括:

  • -A
    所有报告的总和
  • -u
    输出CPU使用情况的统计信息
  • -v
    输出inode、文件和其他内核表的统计信息
  • -d
    输出每一个块设备的活动信息
  • -r
    输出内存和交换空间的统计信息
  • -b
    显示I/O和传送速率的统计信息
  • -a
    文件读写情况
  • -c
    输出进程统计信息,每秒创建的进程数
  • -R
    输出内存页面的统计信息
  • -y
    终端设备活动情况
  • -w
    输出系统交换活动信息
iostat

iostat使用格式为[options] [interval [count]]
interval为取样的间隔,count为取样的次数

  • -c
    仅显示CPU统计信息.与-d选项互斥.
  • -d
    仅显示磁盘统计信息.与-c选项互斥.
  • -k
    以K为单位显示每秒的磁盘请求数,默认单位块.
  • -p device | ALL
    与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如: iostat -p hda ;或显示所有设备:iostat -p ALL
  • -t 在输出数据时,打印搜集数据的时间.
  • -V 打印版本号和帮助信息.
  • -x 输出扩展信息.
dmesg

dmesg记录了系统启动过程中的内核日志信息,包括系统的设备信息,以及在启动和操作过程中系统记录的任何错误和问题的信息。
在/var/log下有dmesg文件,这个文件存储的是开机相关的信息。但是dmesg命令输出的不只是这个文件的信息,还有操作系统对一些错误的处理,比如强杀进程,这些信息存储在messages的一些文件中。

crontab
  • -e
    编辑定时设置
  • -l
    查看定时设置
  • -r
    删除定时设置
  • -u
    指定要操作的用户的定时设置
  • 设置每隔一段时间执行
    在定时设置格式中,前面的几个位置分别代表着:
    分钟 minute: 区间为 0 – 59
    小时 hour: 区间为0 – 23
    每月的日期 day-of-month: 区间为0 – 31
    月份 month: 区间为1 – 12. 1 是1月. 12是12月.
    星期 day-of-week: 区间为0 – 7. 周日可以是0或7.
    这里的取值可以用逗号(,)分隔,或者用减号(-)连接
    如果想取每隔一段时间,可以用斜杠(/)分隔,比如 10-30/5代表10分钟到30分钟这个区间,每隔5分钟。

你可能感兴趣的:(Linux命令)