Linux常用命令整理

212 阅读6分钟

image.png

基本命令

  • cd ~ :切换到登陆用户的主目录(/home/用户名)
  • cd / :切换到根目录
  • cd /home/ :切换到指定目录
  • cd .. :切换到上级目录
  • ls -al 查看当前目录详细信息
  • ls -l 查看文件属性
  • pwd: 查看当前所在目录
  • rm:删除文件或目录
  • hostname:查看当前主机名
  • ifconfig:查看网卡信息
  • ip addr:查看网卡信息

常用命令

  • nohub:应用程序后台启动
  • awk:文件内容处理
  • head/tail :查看文件前后某些行
  • wc:文件单词统计
  • diif:文件内容对比
  • netstat:网络信息统计
  • vmstat:查看进程信息和内存使用
  • mpstat:查看多核处理器的使用情况

解压缩文件

tar:解压缩命令

参数:

  • -c:创建的 tar 文件

  • -x:解开 tar 文件

  • -t:列出 tar 文件中办函的文件信息

  • -r:附加新的文件到 tar 中

  • tar -xvf /home/root/a.tar -C /home/ 解压到指定目录

  • tar -cvf /home/root/ 打包/home/root目录下所有文件

服务器之间传输文件

通过 scp 命令在多台服务器中的相互复制 传输文件。为了省下输入密码,可以设置免密登录。

scp -r /home/a.log root@B_ip:/home 将A服务器的的a.log 复制到B服务器的/home 中

动态查看应用的执行结果,如每隔一秒高亮显示网络连接数的变化情况

watch:动态查看命令结果 watch -n 1 netstat -ant

watch -n 1 -d 'pstree | grep http ' 每隔一秒高亮显示http连接数的变化情况

watch -n 10 'cat /proc/loadavg' 每隔十秒输出系统的平均负载

查看磁盘的大小

df -h

抓取数据包并分析网络情况

tcpdump  来抓取网络中的报文 常见参数:

  • -i 显示socket文件描述符
  • -c 显示指定命令打开的所有文件描述符
  • -t 仅显示打开了文件描述符的进程pid

案例:

  • tcpdump -i eth0 捕获特定网卡数据包
  • tcpdump -c 100 -i eth0 捕获特定个数的数据包
  • tcpdump -w a.pcap -i eth0 将捕获的包保存到文件
  • tcpdump -i eth0 port 8080 捕获特定端口数据包
  • tcpdump -i eth0 arp 捕获特定协议数据包

查看当前网络中的文件连接情况

  • lsof -i 列出所有网络连接
  • lsof -i udp 列出所有udp网络连接
  • lsof -i :3306 列出使用端口的情况
  • lsof -i tcp:3306 列出谁在使用特定的tcp端口
  • lsof -d 2-3 根据描文件述符范围列出文件信息

使用一个命令进行网络连接并上传相关文件

nc :用来快速构建网络链接。常用来调试客户端程序

nc -z A 30-40 扫描机器A端口在30-40的服务 nc -C A 5000 扫描机器A端口在30-40的服务

安装软件

源码方式安装

  • 载解压源码

一般下载下来源码以后都会存在一个 Readme 文件,首先应该仔细阅读这个文件,可能有很多需要修复的以前人家遇见的问题都会在上面做记录,以免入坑不回头

  • 分析平台环境
  • 编译安装软件

当我们输入 make 命令过后即进入了编译阶段,编译时间根据软件的程序规模大小以及硬件配置有关,当输入make install就会开始安装软件,我们可以指定安装目录也可以不指定,系统将给你默认指定目录为 /user/local,这样安装完毕

RPM方式安装

RPM 是Red Hat 公司开发出来的 Linux 下的软件包管理工具。这些以 .rpm结尾的包包含了已经编译好的二进制可执行文件,即将源代码进行编译,安装,然后封装为RPM包

优点即安装简单,方便,因为已经编译完成,安装只是用来验证和解压过程,缺点也比较明显,过于依赖于操作系统,要求RPM包的安装环境必须和RPM封装时的环境保持一致

YUM方式安装

常用案例

  • yum install 全部安装
  • yum install pakage 安装指定包文件
  • yum update 全部更新
  • yum update pakage 更新指定包文件
  • yum info package 显示安装包信息
  • yum list 显示所有已经安装和key安装的程序包
  • yum remove package 删除程序包

shell脚本

将用户输入的字符串转换为需要执行程序的終端叫做shell

编写shell

编写shell:新建一个文件将其命名为 a.sh

#! /bin/bash  #告诉操作系统使用什么解析器
echo "Hello world !"

执行方式1 : 添加可执行权限 再执行

chmod +x ./a.sh ./a.sh

执行方式2 /bin/sh a.sh

变量使用

变量名和等号之间不能有空格

定义变量注意事项:

  • 命名首个字符不能是数字,只能使用英文字母、数字和下划线
  • 不能使用标点符号
  • 不能使用bash中关键字
  • 使用变量(使用变量的过程中,最好加上花括号),只需要在变量前面加上美元符号
  • 只读变量在变量后面加 readonly

案例:

#! /bin/bash
s_name="张三"
echo $s_name

删除变量

使用unset删除变量 变量删除以后不能再次使用,且不能删除只读变量 案例:

#! /bin/bash
s_name="张三"
unset s_name
echo $s_name 不会有任何输出

变量类型

  • 局部变量

仅当前shell可用

  • 环境变量

所有程序都能访问环境变量

  • shell变量

通过一部分环境变量和shell 变量保证shell 的正常运行

字符串

使用字符串的过程中,既可以用双引号也可以用单引号,也可以不用

  • 单引号

单引号内容原样输出,不能包含变量,且不能出现单独单引号

  • 双引号

可以出现转义字符

  • 长度

使用 # 获取字符串长度

  • 数组

支持一维数组,数组元素之间通过空格隔开,读取数组,使用 @输出数组所有元素

案例:

#! /bin/bash
array=(value1,value2,value3)
# 读取数组
value1=${array[0]}
# 使用@输出所有元素
echo ${array[@]}  

获取数组中数组长度 使用 #

shell传递参数

在执行shell的时候,命令行指定参数,如下所示 "":所有参数连接在一起"*":所有参数连接在一起 "@":所有参数分开

#! /bin/bash
echo "执行文件名为:$0" 
echo "第一个参数为:$1" 
echo "第二个参数为:$2" 

#执行: ./a.sh 1 2

test: 检查某个条件是否成立

特殊字符含义:

  • ?# : 传递到脚本的参数个数
  • $* :以一个单字符显示所有向脚本传递的参数
  • ‘$$’:脚本运行的当前进程Id
  • @:@ :与*相同,但是使用时候加引号,并在引号中返回每个参数
  • $- :显示shell使用的当前选项
  • $? :显示最后命令的退出状态,0表示没有错误,其他值都表示有错

test判断

  • -eq 等于
  • -ne 不等于
  • -gt大于
  • -lt 小于
  • -le 小于等于

if判断语法

#! /bin/bash
if  条件
then
表达式1
表达式2

fi

if else-if else判断语法

#! /bin/bash
if  条件
then
   表达式1
elseif 条件2
then
   表达式2
else
    表达式3
fi