1. 更友好的显示当前挂载的文件系统

mount | column -t

这条命令适用于任何文件系统,column 用于把输出结果进行列表格式化操作,这里最主要的目的是让大家熟悉一下 columnt 的用法。 下面是单单使用 mount 命令的结果:

$ mount

/dev/root on / type ext3 (rw)

/proc on /proc type proc (rw)

/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

而加了 column -t 命令后就成为这样了:

$ mount | column -t

/dev/root on / type ext3 (rw)

/proc on /proc type proc (rw)

/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

另外你可加上列名称来改善输出结果

$ (echo "DEVICE - PATH - TYPE FLAGS" && mount) | column -t

DEVICE - PATH - TYPE FLAGS

/dev/root on / type ext3 (rw)

/proc on /proc type proc (rw)

/dev/mapper/lvmraid-home on /home type ext3 (rw,noatime)

列2和列4并不是很友好,我们可以用 awk 来再处理一下

$ (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t

DEVICE PATH TYPE FLAGS

/dev/root / ext3 (rw)

/proc /proc proc (rw)

/dev/mapper/lvmraid-home /home ext3 (rw,noatime)

最后我们可以设置一个别名,为 nicemount

$ nicemount() { (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t; }

试一下

$ nicemount

DEVICE PATH TYPE FLAGS

/dev/root / ext3 (rw)

/proc /proc proc (rw)

/dev/mapper/lvmraid-home /home ext3 (rw,noatime)

2. 运行前一个 Shell 命令,同时用 “bar” 替换掉命令行中的每一个 “foo”

!!:gs/foo/bar

!!

表示重复执行上一条命令,并用

:gs/foo/bar

进行替换操作。

关于

!!

这个用法在

前一篇文章中

已有详细的介绍。

3. 实时某个目录下查看最新改动过的文件

watch -d -n 1 'df; ls -FlAt /path'

watch 是实时监控工具,-d 参数会高亮显示变化的区域,-n 1 参数表示刷新间隔为 1 秒。 df; ls -FlAt /path 运行了两条命令,df 是输出磁盘使用情况,

ls -FlAt

则列出 /path 下面的所有文件。 ls -FlAt 的参数详解:

-F 在文件后面加一个文件符号表示文件类型,共有 /=>@| 这几种类型, 表示可执行文件,/ 表示目录,= 表示接口( sockets) ,> 表示门, @ 表示符号链接, | 表示管道。

-l 以列表方式显示

-A 显示 . 和 ..

-t 根据时间排序文件

4. 通过 SSH 挂载远程主机上的文件夹

sshfs name@server:/path/to/folder /path/to/mount/point

这条命令可以让你通过 SSH 加载远程主机上的文件系统为本地磁盘,前提是你需要安装 FUSE 及 sshfs 这两个软件。

译者注

:关于 sshfs 实际上我之前写过一篇文章介绍过,详见

在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘

。 卸载的话使用 fusermount 或 umount 命令:

$ fusermount -u /path/to/mount/point

# umount /path/to/mount/point

5. 通过 DNS 来读取 Wikipedia 的词条

dig +short txt .wp.dg.cx

这也许是最有趣的一条技巧了,David Leadbeater 创建了一个

DNS 服务器

,通过它当你查询一个 TXT 记录类型时,会返回一条来自于 Wikipedia 的简短的词条文字,这是

他的介绍

。 这里有一个样例,来查询 “hacker” 的含义:

$ dig +short txt hacker.wp.dg.cx

"Hacker may refer to: Hacker (computer security), someone involved in computer security/insecurity, Hacker (programmer subculture), a programmer subculture originating in the US academia in the 1960s, which is nowadays mainly notable for the free software/” “open source movement, Hacker (hobbyist), an enthusiastic home computer hobbyist http://a.vu/w:Hacker"

这里使用了 dig 命令,这是标准的用来查询 DNS 的系统管理工具,+short 参数是让其仅仅返回文字响应,txt 则是指定查询 TXT 记录类型。 更简单的做法是你可以为这个技巧创建一个函数:

wiki() { dig +short txt $1.wp.dg.cx; }

#然后试试吧:

wiki hacker

"Hacker may refer to: Hacker (computer security), …"

如果你不想用 dig ,也可以用 host 命令:

host -t txt hacker.wp.dg.cx

另外在Twitter上看过某人的创意,用普通的dns来作为程序版本更新的查询服务器:设定域名

software-version-check.example.com

的A记录为

1.2.40.3

,对比自己的版本号,嗯,有更新了!

6. 用 Wget 的递归方式下载整个网站

wget --random-wait -r -p -e robots=off -U Mozilla www.example.com

参数解释:

–random-wait 等待 0.5 到 1.5 秒的时间来进行下一次请求

-r 开启递归检索

-e robots=off 忽略 robots.txt

-U Mozilla 设置 User-Agent 头为 Mozilla 其它一些有用的参数:

–limit-rate=20K 限制下载速度为 20K

-o logfile.txt 记录下载日志

-l 0 删除深度(默认为5)

-wait=1h 每下载一个文件后等待1小时

7. 复制最后使用的命令中的参数

or

这个快捷键只能工作于 shell 的 emacs 编辑模式,它可以从最后使用的命令行中复制参数到当前命令行中,下面是一个样例:

$ echo a b c

a b c

$ echo

$ echo c

你可以重复执行该快捷键,以便获取自已需要的参数, 以下是样例:

$ echo 1 2 3

1 2 3

$ echo a b c

a b c

$ echo

$ echo c

$ echo again

$ echo 3

另外,假如你想指定第1个或第2个,或者是第 n 个参数的话,可以按 ALT + 1 (或 ESC + 1) 或 ALT + 2 (或 ESC +2) 这样形式的快捷键。 以下是样例:

$ echo a b c

a b c

$ echo

$ echo a

a

$ echo

$ echo b

b

查看

Emacs Editing Mode Keyboard Shortcuts

一文获取更多类似的快捷键。

8. 执行一条命令但不保存到 history 中

$ command

这条命令可运行于最新的 Bash shell 里,在其它 shell 中没测试过。 通过在命令行前面添加一个空格,就可以阻止这条命令被保存到 bash history (~/.bash_history) 文件中,这个行为可以通过 $HISTIGNORE shell 变量来控制。我的设置是 HISTIGNORE=”&:[ ]*” ,表示不保存重复的命令到 history 中,并且不保存以空格开头的命令行。$HISTIGNORE 中的值以冒号分隔。 如果你的命令内包含密码,比如

mysqladmin

,不把它记录在历史当中是好主义。 深入了解的话,可进一步看此文

The Definitive Guide to Bash Command Line History

9. 显示当前目录中所有子目录的大小

du -h --max-depth=1

–max-depth=1 参数可以让 du 命令显示当前目录下 1 级子目录的统计信息,当然你也可以把 1 改为 2 ,进一步显示 2 级子目录的统计信息,可以灵活运用。而 -h 参数则是以 Mb 、G 这样的单位来显示大小。

译者注

:在此推荐一个小工具 ncdu ,可以更方便的达到此效果。

10. 显示消耗内存最多的 10 个运行中的进程,以内存使用量排序

ps aux | sort -nk +4 | tail

显然这并不是最好的方法,但它确实用起还不错。 这是一个典型的管道应用,通过 ps aux 来输出到 sort 命令,并用 sort 排序列出 4 栏,再进一步转到 tail 命令,最终输出 10 行显示使用内存最多的进程情况。 假如想要发现哪个进程使用了大量内存的话,我通常会使用 htop 或 top 而非 ps 。

11. 用 python 快速开启一个 SMTP 服务

python -m smtpd -n -c DebuggingServer localhost:1025

这是一个用 Python 标准库 smtpd (用 -m smtpd 指定) 实现在简易 SMTP 服务,运行于 1025 端口 。 另外三个参数的解释:

-n 参数让 Python 不要进行 setuid ( 改变用户)为 “nobody” ,也就是说直接用你的帐号来运行

-c DebuggingServer 参数是让 Python 运行时在屏幕上输出调试及运行信息 * localhost:1025 参数则是让 Python 在本地的 1025 端口上开启 SMTP 服务 另外,假如你想让程序运行于标准的 25 的端口上的话,你必须使用 sudo 命令,因为只有 root 才能在 1-1024 端口上开启服务。如下:

sudo python -m smtpd -n -c DebuggingServer localhost:25

linux中bash命令占用内存高,最牛B的 Linux Shell 命令 系列连载(三)相关推荐

  1. 浅谈asio中async_accept函数占用内存高的写法

    相比大家都使用过asio 中的async_accpect如果使用的好,内存会占用的小,下面来看一端实列:

  2. linux fedora35 buff/cache 占用过高解决方法(适用于大部分linux)

    cache 读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备 buffer 写磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘 三条命令: #echo 1 & ...

  3. linux:进程占用的端口,在linux中查看进程占用的端口号

    在Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息. 可以使用以下六种方法查看端口信息. ss:可以用于转储套接字统计信息. netstat:可以显示打开的套接字列表 ...

  4. Linux中bash文档翻译

    BASH(1)通用命令手册BASH(1) 名称 ​ bash - GNU Bourne-Again SHell 概要 ​ bash [选项] [文件] 版权 ​ Bash是自由软件基金会版权所有(C) ...

  5. Win11的两个实用技巧系列之加载驱动失败怎么办、占用内存高的解决办法

    Win11加载驱动失败怎么办?Win11无法加载驱动程序的三种解决方法 win11用户在使用电脑的时候遇到了"无法在设备上加载驱动程序"的情况,导致有些软件无法正常使用,这种情况要 ...

  6. linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  7. 服务器占用内存高,单任务管理器查看每个程序占用都不高

    服务器占用内存高,单任务管理器查看每个程序占用都不高.任务管理器进程内存占用不准确 最近测试一个东西,发现看8G的内存占用90%左右了,但是每个进程的内存占用情况都不高,最高就100M左右,内存都到哪 ...

  8. Linux中文件复制、删除、移动、压缩、解压命令

    Linux中文件复制.删除.移动.压缩.解压命令 复制 cp命令 命令:cp [-adfiprl]源文件或目录 目标文件或目录 说明:将指定源文件或目录复制到目标文件或目录 [选项]: -a 该选项通 ...

  9. linux find 删除文件夹,linux中find与rm实现查找并删除目录或文件linux操作系统 -电脑资料...

    在linux中find是查找搜索文件而rm是删除文件,下面我们来看一篇linux中find与rm实现查找并删除目录或文件的实例,希望文章对大家会有所帮助, 删除指定目录下指定文件 find 要查找的目 ...

最新文章

  1. 什么是条件组合覆盖_物史政组合分析,新高考最终受益者丨选科17期
  2. 将xscj指定为当前数据库_(2)连接登陆数据库
  3. 话说文件系统——aufs源码分析(三)【转】
  4. html css文本框按钮,css样式之区分input是按钮还是文本框的方法
  5. 上云、微服务化和DevOps,少走弯路的办法
  6. asp自动生成html文件的方法
  7. 广西2021各校高考成绩查询入口,2021年广西高考成绩排名查询系统,广西高考位次排名查询...
  8. Android之glide加载圆形图片地址异常监听
  9. 计算机操作系统稳定性的因素有哪些,计算机操作系统期末重点复习汇编.docx
  10. long类型怎么转换成string_Python知识点-Python变量类型有哪些?
  11. 【干货】趣头条基于 Flink+ClickHouse 构建实时数据分析平台
  12. x-scan mysql_X-Scan使用教程
  13. mysql消息订阅与发布_消息发布与订阅
  14. 第二届蓝桥杯省赛---夺冠概率
  15. cad小插件文字刷_必备CAD插件大全,内含最全字体库
  16. HTML <meta> http-equiv 属性
  17. elasticsearch query里面的slop选项
  18. cisco VoIP软电话配置实验
  19. hibernate学习之四——Query和Criteria接口
  20. 行人属性识别一:训练PA100k数据集

热门文章

  1. Axure软件使用总结
  2. 上述所提到的所有资源文件,页面内搜索按住ctrl+f
  3. 联想小新Air 13安装黑苹果兼macOS Mojave安装教程
  4. android studio微信界面设计,android studio开发微信界面
  5. JavaScript 通过HTML的FileReader把图片转成base64
  6. spring boot访问Druid控制台页面报错 Sorry, you are not permitted to view this page.
  7. Nginx报错:Sorry,thepageyouarelookingforiscurrentlyunavailable.Pleasetryagainlater._马立杰_新浪博客...
  8. 数学分析教程史济怀练习9.9
  9. ctfshow-命令执行
  10. 摩托罗拉 L7 用mpt实现备份恢复电话本及上传下载图铃方法