Linux 常用命令 ulimit、uptime、curl、scp、dos2unix 提升开发和运维效率

news2024/11/15 19:47:33

Linux 常用命令:从资源限制到网络传输

  • 一、前导:概述
  • 二、ulimit 用户资源
  • 三、uptime 机器启动时间+负载
  • 四、curl 命令
  • 五、scp 远程拷贝
  • 六、dos2unix和unix2dos命令
  • 七、总结

一、前导:概述

本系列主要讲解Linux运行时命令,包括网络、磁盘、内存、CPU相关参数等,主要是为了分享怎么通过常见的 Linux 命令去排查相关问题。比如:

  1. 发现机器的CPU负荷比较高,那么怎么查到是哪个进程CPU占用率比较高?
  2. 磁盘IO的写入很频繁,怎么查到是哪个进程或线程对磁盘IO频繁的操作?
    等等。

本系列就是分享诸如这类问题的排查技巧。注意,本系列的核心方向不是去讲解Linux的命令查找、显示当前目录等(比如ls、cat等)基础命令操作。本系列的重点分享内容包括:

  1. Linux基础命令和工具。
  2. CPU性能监控。
  3. 内存性能监控。
  4. 文件IO性能监控。
  5. 网络IO性能监控。

强烈推荐:Linux 大牛,Netflix 高级性能架构师 Brendan Gregg的博客http://www.brendangregg.com。《性能之巅》书籍就是他出版的,主要分为:CPU、内存、磁盘、网络四大块。
在这里插入图片描述
在 Linux 系统中,命令行工具是不可或缺的利器,它们能帮助我们更高效地管理系统、进行开发测试、传输文件,甚至解决跨平台兼容性问题。本文将介绍几个常用的 Linux 命令行工具,包括 ulimit、uptime、curl、scp、dos2unix 和 unix2dos。 掌握这些命令,将使你对 Linux 系统的掌控力更上一层楼。 让我们一起开启探索之旅吧!

二、ulimit 用户资源

ulimit 是一个用于控制系统资源使用限制的命令,在 Linux 和类 Unix 操作系统中非常常见。ulimit 主要用于设置或显示用户进程可用的系统资源限制。这些限制可以帮助防止单个用户或进程消耗过多系统资源,从而影响系统的整体性能和稳定性。

常用 ulimit 选项

  1. 查看当前限制

    ulimit -a
    
  2. 设置资源限制

    ulimit -<type> <value>
    

    其中 <type> 表示想要设置的资源类型,<value> 是新的限制值。常见的资源类型包括:

    • -c : 设置核心转储文件的大小(以字节为单位)
    • -d : 设置数据段的大小(以字节为单位)
    • -f : 设置文件的最大大小(以字节为单位)
    • -l : 设置最大可以锁定在内存中的地址空间大小(以字节为单位)
    • -m : 设置最大可用内存大小(以字节为单位)
    • -n : 设置最大打开文件数
    • -s : 设置栈大小(以字节为单位)
    • -t : 设置最大进程运行时间(以秒为单位)
    • -u : 设置每个用户进程的最大进程数
    • -v : 设置最大虚拟内存大小(以字节为单位)
    • -x : 设置最大锁定内存的数量(以字节为单位)

    例如,要将最大文件大小限制设置为 100 MB:

    ulimit -f 102400
    
  3. 设置软限制和硬限制

    • 软限制:是当前使用的限制值,可以被用户临时修改。
    • 硬限制:是系统允许设置的最大限制值,只有超级用户(root)可以修改。

    查看软限制和硬限制:

    ulimit -H -<type>  # 查看硬限制
    ulimit -S -<type>  # 查看软限制
    

    修改软限制(例如,设置最大打开文件数为 2048):

    ulimit -S -n 2048
    

    修改硬限制(例如,设置最大打开文件数的硬限制为 4096,通常需要 root 权限):

    ulimit -H -n 4096
    

Linux系统对每个登录的用户都限制其最大进程数和打开的最大文件句柄数。为了提高性能,可以根据硬件资源的具体情况设置各个用户的最大进程数和打开的最大文件句柄数。可以用ulimit -a来显示当前的各种系统对用户使用资源的限制:

$ ulimit -a
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 15397
max locked memory           (kbytes, -l) 65536
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1048576
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) 15397
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited

这个命令在实现百万并发连接的时候会用到,用于设置文件句柄的参数。

# 设置用户的最大进程数:
ulimit -u 1024
# 设置用户可以打开的最大文件句柄数:
ulimit -n 65530

三、uptime 机器启动时间+负载

uptime 命令查看机器从上次启动以来的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中,确定操作系统的重启时间。

uptime 命令用法: 直接运行 uptime 命令。

uptime

输出示例:

14:55:30 up 5 days,  2:34,  2 users,  load average: 0.05, 0.02, 0.01

这个输出包含了以下几个部分:

  • 当前时间(14:55:30):系统当前的时间。
  • 系统运行时间(up 5 days, 2:34):系统已经运行的时间,这里表示系统已运行了5天2小时34分钟。
  • 当前登录用户数(2 users):当前有多少用户登录到系统。
  • 负载平均值(load average: 0.05, 0.02, 0.01):系统在过去1分钟、5分钟和15分钟内的负载平均值。负载平均值是一个表示系统处理请求的压力指标,数值越高表示系统负载越重。

负载平均值详解:

  • 负载平均值是指系统队列中的进程数。这些进程要么正在运行,要么正在等待 CPU 时间。
  • 如果负载平均值与 CPU 核心数接近,通常表示系统在合理负载范围内。如果负载平均值远高于 CPU 核心数,则说明系统可能过载,可能需要优化或增加资源。

系统的平均负载是指在特定的时间间隔内队列中运行的平均进程数。如果一个进程满足以条件,它就会位于运行队列中。

  • 它没有在等待I/O操作的结果。
  • 它没有主动进入等待状态(也就是没有调用wait相关的系统API )
  • 没有被停止(例如:等待终止)。

如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能还算可以支持。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

负载说明(现针对单核情况,不是单核时则乘以核数):

  • load<1:没有等待。
  • load==1:系统已无额外的资源跑更多的进程了。
  • load>1:进程都堵着等待资源。

注意:

  • load < 0.7时:系统很闲,要考虑多部署一些服务。
  • 0.7 < load < 1时:系统状态不错。
  • load == 1时:系统马上要处理不多来了,赶紧找一下原因。
  • load > 5时:系统已经非常繁忙了。

不同load值说明的问题:

  • 1分钟 load >5,5分钟 load < 3,15分钟 load <1:短期内繁忙,中长期空闲,初步判断是一个抖动或者是拥塞前兆。
  • 1分钟 load >5,5分钟 load >3,15分钟 load <1:短期内繁忙,中期内紧张,很可能是一个拥塞的开始。
  • 1分钟 load >5,5分钟 load >5,15分钟 load >5:短中长期都繁忙,系统正在拥塞。
  • 1分钟 load <1,5分钟load>3,15分钟 load >5:短期内空闲,中长期繁忙,不用紧张,系统拥塞正在好转。

补充:

  • 查看cpu信息:cat /proc/cpuinfo
  • 直接获取cpu核数:grep 'model name' /proc/cpuinfo | wc -l

uptime 命令可以与 tophtop 命令结合使用,提供更详细的系统资源使用情况和进程列表。比如在监控系统性能时,可以同时使用这些工具来获取系统的实时状态和负载情况。

四、curl 命令

curl 是一个常用的命令行工具,用于向服务器发送和接收数据。它支持多种协议,如 HTTP、HTTPS、 FTP、SFTP、SMTP 等。curl 的功能非常强大,适用于从网页下载数据、与 REST API 交互、测试服务器响应等场景。

基本用法:发送一个简单的 GET 请求并获取网页内容。

curl http://www.sina.com

下面是 curl 命令常用参数的表格汇总:

参数说明示例使用
-X指定请求方法curl -X POST http://example.com/resource -d "key=value"
-d发送 POST 请求时传递的数据curl -d "key=value" http://example.com/resource
-F发送文件或表单数据curl -F "file=@path/to/local/file" http://example.com/upload
-O下载文件并将其保存为原文件名curl -O http://example.com/file.zip
-o下载文件并指定保存的文件名curl -o myfile.zip http://example.com/file.zip
-I仅显示响应头curl -I http://example.com
-i显示请求和响应头curl -i http://example.com
-H添加自定义请求头curl -H "Authorization: Bearer YOUR_TOKEN" http://example.com/secure
-v显示详细的请求和响应信息,便于调试curl -v http://example.com
-k忽略 SSL 证书验证curl -k https://example.com
--cert指定客户端证书curl --cert client.crt --key client.key https://example.com
--key指定客户端证书的私钥curl --cert client.crt --key client.key https://example.com
-L跟随 HTTP 重定向curl -L http://example.com/redirect
--limit-rate限制下载速度curl --limit-rate 100k http://example.com/largefile.zip
-u指定用户名和密码进行基本认证curl -u username:password http://example.com
-T上传文件curl -T localfile.zip http://example.com/upload
-e设置 Referer 请求头curl -e http://referer.com http://example.com
--proxy使用指定的代理服务器curl --proxy http://proxyserver:port http://example.com
-A设置用户代理(User-Agent)curl -A "Mozilla/5.0" http://example.com
-G发送 GET 请求时附加查询参数curl -G -d "key=value" http://example.com/resource
-s静默模式,不显示进度条和错误信息curl -s http://example.com
--data-urlencode对数据进行 URL 编码curl --data-urlencode "key=value" http://example.com
-w在输出中写入自定义格式的文本curl -w "%{http_code}" -o /dev/null -s http://example.com

由于当前的线上服务较多地使用了RESTful风格的API,所以集成测试就需要进行HTTP调用,查看返回的结果是否符合预期,curl命令当然是首选的测试方法。
使用方式:

curl -i "http://www.sina.com" # 打印请求响应头信息
curl -I "http://www.sina.com" # 仅返回http头
curl -v "http://www.sina.com" # 打印更多的调试信息
curl -verbose "http://www.sina.com" # 打印更多的调试信息
curl -d 'abc=def' "http://www.sina.com" # 使用post方法提交http请求
curl -sw '%{http_code}' "http://www.sina.com" # 打印http响应码

五、scp 远程拷贝

scp是 secure copy 的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,是一种用于在 Linux 和 Unix 系统之间进行安全文件传输的命令行工具。它基于 SSH 协议,因此在传输文件时提供了加密和安全性。scp 允许用户从远程主机下载文件到本地,或将本地文件上传到远程主机。

scp 命令的常用参数表格:

参数说明示例使用
-r递归复制整个目录scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
-P指定连接远程主机的端口(注意是大写的 -Pscp -P 2222 /path/to/local/file username@remote_host:/path/to/remote/destination
-p保持文件的修改时间、访问时间和权限scp -p /path/to/local/file username@remote_host:/path/to/remote/destination
-q安静模式,不显示传输进度scp -q /path/to/local/file username@remote_host:/path/to/remote/destination
-C启用压缩以加速传输scp -C /path/to/local/file username@remote_host:/path/to/remote/destination
-o传递额外的 SSH 选项scp -o "StrictHostKeyChecking=no" /path/to/local/file username@remote_host:/path/to/remote/destination
-i指定私钥文件进行认证scp -i ~/.ssh/private_key /path/to/local/file username@remote_host:/path/to/remote/destination
-v显示详细的调试信息scp -v /path/to/local/file username@remote_host:/path/to/remote/destination

scp命令是Linux系统中功能强大的文件传输命令,可以实现从本地到远程,以及从远程到本地的双向文件传输,用起来非常方便,常用来在线上定位问题时将线卜的一些文件下载到本地进行详查,或者将本地的修改上传到服务器上。

前提:

sudo apt-get install openssh-server​

使用示例:

scp Lion@122.152.222.180:/home/Lion/test.txt .   #下载122.152.222.180的文件
scp mi9.aac Lion@122.152.222.180:/home/Lion/  #上传文件到122.152.222.180

#下载test整个目录到本地
scp -r Lion@122.152.222.180:/home/Lion/test .  

#上传本地test整个目录到122.152.222.180
scp -r test Lion@122.152.222.180:/home/Lion/   

六、dos2unix和unix2dos命令

dos2unixunix2dos 是两个用于处理文本文件格式转换的命令行工具,主要用于在不同操作系统之间转换文本文件的换行符格式。这在跨平台开发中尤其有用,例如将 Windows 系统上的文本文件转换为 Unix/Linux 系统上的格式,或者反之。通常在Windows系统开发的脚本和配置,UNIX系统下都需要转换。

dos2unix: 功能是将 Windows 风格的换行符(CRLF,即 \r\n)转换为 Unix 风格的换行符(LF,即 \n)。用于将从 Windows 系统生成的文本文件转换为 Unix/Linux 系统可接受的格式。

dos2unix filename

unix2dos :功能是将 Unix 风格的换行符(LF,即 \n)转换为 Windows 风格的换行符(CRLF,即 \r\n)。用于将 Unix/Linux 系统上的文本文件转换为 Windows 系统可接受的格式。

unix2dos filename

dos2unixunix2dos 命令的常用参数:

命令参数说明示例使用
dos2unix-c指定转换的文件格式(可以是 asciiunixmacwindowsdos2unix -c=mac filename
dos2unix-o仅处理文件,不显示任何输出dos2unix -o filename
dos2unix-q静默模式,不显示错误信息dos2unix -q filename
unix2dos-c指定转换的文件格式(可以是 asciiunixmacwindowsunix2dos -c=mac filename
unix2dos-o仅处理文件,不显示任何输出unix2dos -o filename
unix2dos-q静默模式,不显示错误信息unix2dos -q filename

常用参数是-c 用于指定文件格式,-o-q 用于控制输出行为。这两个工具对于确保文本文件在不同操作系统之间的兼容性是非常有用的,特别是在开发和文件传输的场景中。

转换整个目录:

find . -type f -exec dos2unix {} \;
# find ./ -type f 此命令是显示当前目录下所有的文件

七、总结

本文主要介绍了几个常用的 Linux 命令行工具,包括 ulimituptimecurlscpdos2unixunix2dos。 这些命令在系统管理、开发测试、文件传输和跨平台兼容性方面都发挥着重要作用。

  • ulimit 命令:用于控制系统资源使用限制,可以有效防止单个用户或进程消耗过多资源,保护系统稳定性。
  • uptime 命令:用于查看系统运行时间和负载情况,帮助评估系统性能,并及时发现系统是否存在过载问题。
  • curl 命令:用于向服务器发送和接收数据,可以用来测试 API、下载数据、与 RESTful API 交互等。
  • scp 命令:用于在 Linux 和 Unix 系统之间进行安全文件传输,可以实现从本地到远程,以及从远程到本地的双向文件传输。
  • dos2unixunix2dos 命令:用于处理文本文件格式转换,可以将 Windows 风格的换行符转换为 Unix 风格的换行符,反之亦然,确保文本文件在不同操作系统之间的兼容性。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2094086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm中opencv-python和opencv-contrib安装及测试相机链接取图

1.去到https://pypi.org/中查找opencv-python 和opencv-contrib-python当前下载的是4.10.0 2.分别下载。 3.下载完后&#xff0c;打开pycharm&#xff0c;然后新建一个项目&#xff0c;项目中新建一个main.py文件&#xff0c;设置项目配置环境为当前python环境&#xff0c; …

常用排序算法(上)

目录 前言&#xff1a; 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想&#xff1a; 2.1.2直接插入排序&#xff1a; 2.1.3 插…

JS设计模式之“神奇的魔术师” - 简单工厂模式

引言 在JavaScript开发中&#xff0c;我们经常需要创建和管理各种对象&#xff0c;而简单工厂模式就是一种最简单的用来创建对象的设计模式。 简单工厂模式通过一个工厂类来创建相似的对象&#xff0c;而无需直接使用具体类来实例化对象。这样可以将对象的创建过程与使用过程…

Zabbix 配置win系统登录和钉钉告警

1、配置win监控项 win系统日志ID 4624是成功登录 4625是失败登录 登录成功日志&#xff1a; eventlog[Security,,"Success Audit",,^4624$,,skip] 登录失败日志&#xff1a; eventlog[Security,,"Success Audit",,^4625$,,skip] 要监控登录的日志&…

音视频开发之旅(90)-Vision Transformer论文解读与源码分析

目录 1.背景和问题 2.Vision Transformer(VIT)模型结构 3.Patch Embedding 4.实现效果 5.代码解析 6.资料 一、背景和问题 上一篇我们学习了Transformer的原理&#xff0c;主要介绍了在NLP领域上的应用&#xff0c;那么在CV(图像视频)领域该如何使用&#xff1f; 最直观…

在Diffusers中使用LoRA微调模型

在浏览稳定扩散模型共享网站&#xff08;例如 CivitAI&#xff09;时&#xff0c;你可能遇到过一些标记为“LoRA”的自定义模型。“LoRA”到底是什么—它与典型的模型检查点有何不同&#xff1f;LoRA 可以与Diffusers包一起使用吗&#xff1f;在本文中&#xff0c;我们将回答这…

计算机视觉基础 2. 滤波器

1. 简介 模糊滤波器是低通滤波器。它们从图像中去除高空间频率内容&#xff0c;只留下低频空间分量。结果是图像失去了细节&#xff0c;看起来很模糊。图像模糊在计算机图形学和计算机视觉中有许多应用。它可用于降低噪声&#xff08;如图17.1所示&#xff09;&#xff0c;揭示…

代码时光机:Git基础速成

hello,家人们,今天咱们来介绍Git以及Git相关的操作,好啦,废话不多讲,开干. 1:Git初识 在介绍Git前,博主首先讲一个小故事. 我们学计算机的小伙伴们,在学校里头都有实验课,那么老师呢就会要求我们写实验报告并且要求我们交上去给老师检查.有一个学计算机的大学生,名字叫张三,然…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习进阶task2:自适应学习率,分类

1.自适应学习率 临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。很多时候训练网络&#xff0c;损失不再下降&#xff0c;不是因为到了临界点&#xff0c;而是可能在山谷之间不停震荡。 以下为不同学习率对训练的影响&#xff0c;下图中左右平缓&#xff0c;上下陡…

C语言 | Leetcode C语言题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; struct hashTable {int key;int val;UT_hash_handle hh; };int firstUniqChar(char* s) {struct hashTable* position NULL;int que[26][2], left 0, right 0;int n strlen(s);for (int i 0; i < n; i) {int ikey s[i];struct has…

火语言RPA流程组件介绍--浏览选择文件夹

&#x1f6a9;【组件功能】&#xff1a;打开浏览文件夹选择对话框 配置预览 配置说明 对话框标题 支持T或# 打开浏览文件夹对话框时显示的标题。 默认打开文件夹 支持T或# 打开浏览文件夹对话框时&#xff0c;默认打开此文件夹。 取消后终止流程 “是”、“否”2种供选择…

一篇详细介绍常用第三方库的教程

作者&#xff1a;郭震 我们之前介绍过如何安装Python的各种常用第三方库.这些库为程序员提供了许多功能,能够大大简化我们的开发工作.本文将为你介绍一些最常用的第三方库,帮助你更好地理解它们的用途及基本概念. 1. NumPy NumPy是一个强大的科学计算库.它提供了多维数组对象以…

09.定时器02

#include "reg52.h"sbit led P3^6;void delay10ms() { //1. 配置定时器0工作模式位16位计时TMOD 0x01;//2. 给初值&#xff0c;定一个10ms出来TL00x00;TH00xDC;//3. 开始计时TR0 1;TF0 0; } void main() {int cnt 0;led 1;while(1){if(TF0 1)//当爆表的时候&a…

Git之2.9版本重要特性及用法实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列…

非关系型数据库 Redis 的安装与配置

文章目录 一 . CentOS 7 安装 Redis【版本选择说明】一 . 安装 Redis二 . 配置 Redis2.1 针对可执行程序设置符号链接2.2 针对配置文件设置符号链接2.3 修改配置文件2.3.1 设置 IP 地址2.3.2 关闭保护模式2.3.3 启动守护进程2.3.4 设置工作目录2.3.5 设置日志目录 三 . 启动 Re…

Apache SeaTunnel Zeta 引擎源码解析(一)Server端的初始化

引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本&#xff0c;围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程&#xff0c;希望通过这篇文档&#xff0c;对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文章将会分成三篇&#xff0c;从以下方向给大家介绍&am…

掌握数据利器:AWS Glue与数据基盘概览

引言 随着数字化进程的不断推进&#xff0c;企业现在能够积累并分析海量且多样化的数据。这一优势使得许多企业开始采用数据驱动型经营&#xff08;即基于数据的经营策略&#xff09;。通过基于数据的客观判断&#xff0c;企业及其管理者可以获得诸多好处。 然而&#xff0c;…

DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展

这几天全球各界最火热的话题非奥运会莫属&#xff0c;而其中乒乓球比赛更是引起了互联网的讨论热潮&#xff0c;无论是欢呼也好、争议也罢&#xff0c;在现实世界人类的乒乓球大赛风生水起的同时&#xff0c;AI已经偷偷在乒乓球上“出师”了—— ——DeepMind近日发布一项新工作…

机器学习 第7章 贝叶斯分类器

目录 7.1 贝叶斯决策论7.2 极大似然估计7.3 朴素贝叶斯分类器7.4 半朴素贝叶斯分类器7.5 贝叶斯网7.5.1 结构7.5.2 学习7.5.3 推断 7.6 EM算法 7.1 贝叶斯决策论 对分类任务来说&#xff0c;在所有相关概率都己知的理想情形下&#xff0c;贝叶斯决策论考虑如何基于这些概率和误…

如何删除浏览器每次登录自动保存的密码,以防自动登录泄露自己的隐私

今天小编以 Microsoft edge 浏览器为例&#xff0c;如何在自己离职或毕业以后留给他人的电脑是干净的&#xff0c;不会在任何网页登录时显示已保存的密码&#xff0c;让他人自动登录。 ①在电脑上打开 Microsoft edge 浏览器后&#xff0c;点击“设置” ②进入设置界面后&…