Linux04(进程、shell)

常用命令

  • top

显示当前系统中耗费资源最多的进程

  • ps

显示瞬间的进程状态

-e /-A 显示所有进程,环境变量
-f 全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程

[root@master qy114]# ps -aux
[root@master qy114]# ps -ef
  • kill

杀死一个进程

kill -9 pid
  • ifconfig
网卡网络配置详解 
  • ping
测试网络的连通性

shell脚本

当命令不在命令行中执行,而是从一个文件中执行时,该文件就是shell脚本。

  • Shell是一种解释型编程语言,不需要编译,执行时也是按行执行
  • Shell脚本是由解释器解释执行的,常见的解释器有:
bash dash ash  ksh  sh等
每种Shell解释器对shell的语法解释并不完全相同,但基本相同

1示例

1创建脚本

vim test.sh

#!/bin/sh
echo 'hello world'  #注释

2.修改权限

chmod 766 test.sh 

3.执行

./test.sh 

2.定义变量

shell中没有变量类型,本质上都是字符串

变量大致分为四类

  • 本地变量:仅在当前shell中有用,在shell外部或者子shell中都不可用
  • 环境变量:当前及子shell有用
  • 位置参数变量:脚本的参数或者函数的参数等
  • 特殊变量:脚本内置的具有特殊用途的变量
声明变量
a=/root   #定义变量a  字符串可以加‘’,也可以不加
c=        #声明变量 c
b=$a/qy114  #定义变量b 并引用变量a

ls -la $b  #引用变量b 

export a   #将a 声明为外部变量,	子shell 中可以使用
unset b    #将b 变量删除
位置参数变量
$1 表示第1个参数值,……,$9 表示第9个参数值
${10} 表示第10个参数值, ${11} 表示第11个参数值, ……
特殊变量
命令行变量

$* 将所有位置参量看成一个字符串(以空格间隔) 。
@ 将 每 个 位 置 参 量 看 成 单 独 的 字 符 串 ( 以 空 格 间 隔 ) 。 “ @ 将每个位置参量看成单独的字符串(以空格间隔)。 “ @*” 将所有位置参量看成一个字符串(以 I F S 间 隔 ) 。 “ IFS间隔)。 “ IFS@” 将每个位置参量看成单独的字符串(以空格间隔) 。
$0 命令行上输入的Shell程序名。
$# 表示命令行上参数的个数。

进程状态相关

$?  表示上一条命令执行后的返回值
$$  当前进程的进程号
$!   显示运行在后台的最后一个作业的 PID 
$_  在此之前执行的命令或脚本的最后一个参数

示例2

#!/bin/sh
echo 'hello world'  #注释

echo "应用名: $0"
echo "参数1: ${1}"
echo "进程id: $$"
echo "上一个命令返回值: $?"

3退出/返回状态

$?:返回上一条语句或脚本执行的状态
  • 0:成功
  • 1-255:不成功
exit 命令

n 是一个从 0 到 255 的整数
0 表示成功退出,非零表示遇到某种失败
返回值 被保存在状态变量 $? 中

exit n
常见状态码
0  执行正确
1  通用错误
126 命令或脚本没有执行权限
127 命令没找到

4数据流重定向

> 表示 写入; >>表示追加
<表示 读入;<<表示结束读入
echo aaa >aa.text #覆盖写入
echo aaa >> aa.tex #追加写入

一次性追加写入多行

cat >>  aa.text <<EOF
dsfsdf
sdfasd
EOF

5.命令的连续执行

使用场景

  • 执行备份日志成功后删除日志
  • 从服务器下载文件失败后从备份服务器下载

&&

连起来的命令,后面的命令只有在前一命令执行成功后才执行

ls /root/qy114 && echo 'fsdfsd'

||

连起来的命令,后面的命令只有在前一命令执行失败后才执行

ls /root/qy115 || echo 'fsdfsd'

|

命令是同时执行的

ls /root/qy115 || echo 'fsdfsd'

awk

awk是一个非常棒的数据处理程序,它比较倾向于将一行分成多个‘字段’来处理

数据可以来自标准输入、一个或者多个文件、其他进程的输出

awk从第1行到最后一行逐行扫描,并执行匹配的操作

awk的默认操作是输出匹配行即打印匹配行到标准输出

基本语法

awk 'BEGIN{语句1;语句2;...}  END{语句1;语句2;...}  模式1{语句1;语句2;...}  模式2{语句1;语句2;...}  模式n...'   [文件名]

begin,end 可以省略

分隔符为 空格 tab

示例

echo '1 2 3 4' |awk 'BEGIN{print "start"} END{print "end"} {print $1}'

输出第几列

echo '1 2 3 4' | awk '{print $1}'
echo '1 2 3 4' | awk '{print $1"A"$2}'   #列之间使用A连接
echo '1 2 3 4' | awk '{print $1,"A",$2}' #列之间使用A连接

内置变量

FS输入列分隔符,默认是空格或tab
OFS输出列分隔符,默认空格
NF每一行拥有的字段总数
NR目前awk处理的是第几行数据
RS输入行分隔符,默认是换行符
ORS输出行分隔符,默认是换行符

自定义分隔符

echo '1;2;3;4' | awk 'BEGIN{FS=";"}{print $1,"A",$2}'

从多上行开始读文件

awk 'NR>1{print $0}' /etc/profile

比较字符转

echo 'A B C D' | awk '$1=="A"{print "yes"}'

差选进程id

ps -e | awk '$4=="sleep"{print $1}'

查询进程叫-bash的进程号

ps -ef | awk 'BEGIN{ print "begin..."} END{print "end..."} $8=="-bash"{print $2}'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值