Linux开发运维

一、部署服务的基础操作

方向键↑ ↓:取得历史命令。当我们移动上方向键时,每按一次,都会查询更前一次命令。
管道操作符|:将上一个命令的输出结果,传给下一个命令,作为后者的输入
筛选匹配grep:从文本文件或管道数据流中筛选匹配的行和数据。

1.1 系统监测

1.1.1 查看资源使用情况

  • top 查看资源,c 详细内容
  • shift+m:内存排序
  • shift+p:CPU排序

1.1.2 查看端口占用情况

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

netstat -tunlp | grep 端口号

1.1.3 查看主机的IP地址

hostname -i

1.1.4 查看网路权限是否可通

ping通常用来测试与目标主机的连通性,根据它输出的信息来确定目标主机是否可访问。

linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。

示例如下:

ping 192.168.120.205

1、ping的通的情况
在这里插入图片描述
2、ping不通的情况
在这里插入图片描述

1.2 进程管理

1.2.1 查看指定进程

ps -aux|grep predict

1.2.2 查看所有进程

top:动态查看进程。

1.2.3 杀死进程

kill -9:强制杀死进程。

1.3 nohup起服务

nohup命令是在Linux系统下用于在后台执行命令,以防止用户退出终端或网络连接中断导致命令停止运行。

nohup python test.py >> test.log 2&1

nohup命令将命令的输出重定向到文件中,使命令可以在后台持续运行。
> 和 >>:输出重定向。前者覆盖旧文件,后者不覆盖、追加新内容。
2>&1:将标准错误重定向到标准输出。即将报错信息记录到指定文件中。

1.4 定时任务

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

1.4.1 查看crontab内容

crontab -l:列出当前用户的crontab内容。

1.4.2 修改crontab文件

crontab -e:修改当前用户的crontab内容。

  • i 键,进入到编辑模式,输入命令行内容。
  • esc键,退出编辑模式,返回命令模式。
  • 键盘打下 :wq,保存退出。

1.4.3 时间格式

 -     *    *   *   *  command
分   时   日   月  周   命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

星号(*):代表所有可能的值,如month字段为星号,则表示每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“*/2”表示每两小时执行一次。

1.5 linux的三种模式

1.5.1 命令模式

用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

  • i/o/a :切换到编辑模式,以输入字符。
  • : (英文冒号):切换到底线命令模式,以在最底一行输入命令。

1.5.2 编辑模式

在编辑模式中,这就和一般的文本编辑器一样了,用来输入代码等内容。

  • esc键: 退出输入模式,切换到命令模式

1.5.3 底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。基本的命令有:

  • :q :退出程序
  • :w :保存文件
  • :wq: 保存并退出

1.6 删除文件

删除非空文件夹

rm -rf 文件名

二、shell脚本编写

echo "***************start,time:" $(date "+%Y-%m-%d %H:%M:%S")

2.1 shell脚本

参考资料:Shell脚本编写

  1. shell入门
  2. shell注释
  3. shell变量
  4. shell字符串
  5. shell数组
  6. shell运算符
  7. shell流程控制
  8. shell函数

2.2 解决编码问题

当在Linux系统下执行本来存在的shell脚本文件,但是在执行时就是提示你文件不存在。in/sh^M: bad interpreter: No such file or directory。

此时一般原因就是你shell脚本在编写时的系统跟你的执行脚本的系统不一致。比如你在window系统编写的脚本,当拷贝到Linux系统时就会遇见此问题。或者在github上使用windows系统下载源文件中包含shell脚本文件时,当你解压并拷贝到Linux系统执行时,也可能发生此问题。

在windows下编辑的.sh文件的格式为dos格式,而linux只能执行格式为unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。

解决办法:通过vi编辑器来修改文件的format格式。

1、首先用vi命令打开文件

[root@localhost test]# vi test.sh

2、在vi命令模式中使用 :set ff 命令,可以看到文件的格式为

fileformat=dos

3、修改文件format为unix,输入以下两种都可以

:set ff=unix
:set fileformat=unix

4、输入:wq保存退出,重新执行脚本就正常了

三、进阶操作

3.1 用户和用户组

3.1.1 两种用户

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

3.1.2 su和sudo

1、su 切换用户
要从root用户切换到普通用户user,则使用 su user
要从普通用户user切换到root用户则使用 su、su root,此时系统会提示输入root用户的口令。
注意:没有时间限制。

2、sudo 提升权限
普通用户只能对自己目录下的文件进行访问和修改,如果想要执行一个需要 root 权限的操作,通常是不行的。如果想要成功执行,则需要提升当前用户的级别。而 sudo 就是用来执行需要提升权限(通常是作为 root 用户)的命令。

PS:并不是所有用户都能使用 sudo 指令,用户能使用 sudo 的前提,是在 /etc/sudoers 文件里有与该用户相关的信息(即用户属于 sudo 用户组)。

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户可以执行“exit”或“logout” 。
sudo su:运行sudo命令给su命令提权,运行su命令。

3.2 文件

3.2.1 树状目录结构

各部分含义,参考资料:Linux基础-目录结构
在这里插入图片描述

3.2.2 文件权限

linux文件的权限可以分为四类:可读、可写、可执行、没有权限。分别用字符r、w、x、- 表示。

在linux命令行中,输入:ls -la, 可以查看当前目录下面所有文件的权限。权限不分,一共包含9个字符(最前面的-不算),每三个一组分别代表拥有者、用户组其它用户以及其它用户的权限。
在这里插入图片描述

3.2.3 常用操作

pwd:查看当前工作目录
cd:定位到指定工作目录
ls -l / ls -a:列出目录内容
cp:复制文件和目录

3.2.4 文件解压缩

tar:文件后缀.tar/.tgz。
gzip/gunzip:文件后缀.gz。
zip:文件后缀.zip。Windows常用,Linux不常用。

3.3 yum工具—软件包管理

待补充

3.4 环境

待补充

四、运维

4.1 资源监测

Linux系统可以通过top命令查看系统的运行状态,包括负载,内存使用(交换分区),CPU使用、当前运行的线程,进程等信息。

top - 11:09:00 up 324 days, 17:24,  1 user,  load average: 0.38, 0.38, 0.37
Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.9 us,  0.5 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267100 total,  1142448 free,  7907452 used,  7217200 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  7969352 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5466 elastic+  20   0 7503920 1.508g  39564 S   4.0  9.7   4:46.62 java
 9544 root      20   0 1306232 190444   6404 S   2.0  1.2   4425:19 mongod

第一行:这行显示的信息与命令uptime显示的信息相同

top - 11:09:00 up 324 days, 17:24, 1 user, load average: 0.38, 0.38, 0.37

对应的信息:系统当前时间 up 系统到目前为止运行的时间, 当前系统的登陆用户数量,load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。

注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:任务进程

Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie

对应的信息:tasks表示任务(进程),136则表示现在有136个进程,其中处于运行中的有1个,135个在休眠(挂起),stopped状态即停止的进程数为0,zombie状态即僵尸的进程数为0个。

第三行:CPU状态信息

%Cpu(s):  0.9 us,  0.5 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

依次对应:
us——用户空间(user)占用cpu的百分比
sy——内核空间(system)占用cpu的百分比
ni——改变过优先级(niced)的进程占用cpu的百分比
id——空闲(idolt)CPU百分比
wa——IO等待(wait)占用cpu的百分比
hi——IRQ 硬中断(Hardware)占用cpu的百分比
si——软中断(software)占用cpu的百分比
st——被hypervisor偷去的时间

第四和第五行:当前内存状态信息, 单位都是KiB

KiB Mem : 16267100 total, 1142448 free, 7907452 used, 7217200 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 7969352 avail Mem

对应信息:

  • Mem:物理内存总量(16G)
  • free: 空闲内存总量(1G)
  • used: 使用中的内存总量
  • buff/cache: 用作内核缓存的内存量

对于内存监控,在top里我们要时刻监控swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。正常情况下swap应该很少被使用,used值比较大说明交换空间被使用的比较多,如果通过vmstat命令看到swap in/out的比较频繁的话,说明系统内存严重不足,整体性能已经受到严重影响

  • Swap: 交换区总量
  • free:空闲交换区总量
  • used: 使用的交换区总量
  • avail Mem:表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来。

第七行:各进程的监控

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

依次对应:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值