在ECS上学习使用Linux系统

简介: 通过在学习ECS,并在上面部署自己的博客,学习了Linux系统,感觉收获很大,下面正文内容记录了我在学习linux时的一些收获,更多内容欢迎访问我的博客 https://kingofdark.top/

任务挂起与恢复

我想大家应该都知道ctrl+c是终止任务/进程, ctrl+z是任务挂起(将一个正在前台执行的命令放到后台,并且处于暂停状态),那么任务挂起后该如何恢复呢?经过查阅1,可以参考使用如下命令:

  1. jobs 显示当前暂停的进程
  2. bg %N 使第N个任务在后台运行(%前有空格)
  3. fg %N 使第N个任务在前台运行

注意:默认 bg 和 fg 不带%N时表示对最后一个进程操作


此外与任务/进程控制相关的命令还有 & 和 nohup2

Commod + & 在一个命令最后加上一个 &,可以将这个命令放到后台执行;

如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

验证JSON格式正确性

cat a.json | python -m json.tool | wc -l 

使用上述命令,可以检查一个文件是否符合json格式,其实现原理如下:

  • 要验证的文件 a.json;
  • 如果返回结果一行数字,则表示 a.json 文件格式正确;
  • 否则返回 a.json 文件中错误的行号及错误信息。

一旦 JSON 文件格式不对,或者文件内容缺失或者其他问题,就会导致 python -m 命令无法格式化,正是利用这一点,我们可以做一个 JSON 的验证。3


为了简化命令,可以利用alias设置命令别名,但是因为需要命令行参数传入文件名,而alias不支持命令行参数。在查阅资料后4,找到一种方法,就是通过定义函数的方式来实现。

alias isjson='isjson(){cat "$1" | python -m json.tool | wc -l}; isjson'

GREP、SED、AWK命令

GREP

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。3

  • grep默认是忽略二进制数据的,可以加上 -a--text 来表示不忽略二进制文件。
grep -a file_name
或
grep --text file_name 
  • -E : 使用正则表达式,匹配了才输出
grep -E "word1|word2|word3" file.txt
#满足任意条件(word1、word2和word3之一)将匹配。
grep word1 file.txt | grep word2 |grep word3
#必须同时满足三个条件(word1、word2和word3)才匹配。
  • -r :递归搜索目录
grep -r word directory
  • -v : 显示不包含匹配文本的所有行。
grep -v 'abc\|efg' log.txt
#排除 log.txt 中的 abc efg 关键字

SED

sed 可依照脚本的指令来处理、编辑文本文件。sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

对文件进行文本替换操作:

sed -i 's/原字符串/新字符串/' filename
sed -i 's/原字符串/新字符串/g' filename

-i 表示直接修改读取的文件内容,而不是输出到终端。

最后带 g 进行了一个全局的搜索;不带g的话,只是匹配每行的第一个字段,后面的匹配则会忽略。


示例:

  • sed 文件首尾添加引号
sed -i 's/^/"/;s/$/"/'  log.txt
  • sed 文件尾添加逗号
sed -i 's/$/,/'  txt

注意上述命令在Mac系统的终端里会报错,需要在"-i" 后加上 ""

AWK

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

  • -F :指定输入文件折分隔符
  • -v : 赋值一个用户定义变量。

使用示例:

# 每行按空格或TAB分割,输出文本中的1、4项
awk '{print $1,$4}' log.txt
# 格式化输出
awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
# 使用","分割
awk -F , '{print $1,$2}'   log.txt
# 使用自定义变量
awk -v a=1 '{print $1,$1+a}' log.txt    # 数值加
awk -v a=1 '{print $1,$1a}' log.txt        # 字符加

压缩和解压

zip

  • 压缩文件: zip 压缩文件名 源文件
  • 压缩目录: zip -r 压缩文件名 源目录
  • 解压: unzip 压缩文件名

示例:

mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book
unzip book.zip

参考引用

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
搜索推荐 Linux 测试技术
Linux系统之部署homer静态主页
【10月更文挑战第11天】Linux系统之部署homer静态主页
57 41
Linux系统之部署homer静态主页
|
2天前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
52 32
|
1天前
|
Linux
Linux 系统五种帮助命令的使用
Linux 系统五种帮助命令的使用
25 14
|
1天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
9 3
|
1天前
|
编解码 Linux 开发工具
Linux系统启动管理
Linux系统启动管理
17 3
|
1天前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
19 0
Linux系统之Centos7安装cockpit图形管理界面
|
2天前
|
Ubuntu 关系型数据库 MySQL
Linux系统MySQL安装
【10月更文挑战第19天】本文介绍了在 Linux 系统上安装 MySQL 的步骤,包括安装前准备、安装 MySQL、启动 MySQL 服务、配置 MySQL 以及验证安装。适用于 Ubuntu/Debian 和 CentOS/Fedora 系统,提供了详细的命令示例。
|
4天前
|
Linux 编译器 C语言
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
【Linux快速入门(一)】Linux与ROS学习之编译基础(gcc编译)
|
1天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
1天前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?