2017年5月

Linux 中国一直以来都在运营着一些微信群,帮助大家找到组织,和有共同爱好的朋友一起讨论关于 Linux 、运维 、开发等等。但是长期以来,受限制于微信群二维码仅能在群成员少于 100 人时使用,超过 100 人就需要微信群管理员手动拉人,对管理员们造成了很大的困扰。同时,由于群里有很多人,平时管理员们也有自己的工作,导致无法让用户获得更好的体验。

出于解决上述两个问题的初衷,我们基于 @youfou 开源的 wxpy 库开发了微信机器人,来协助我们的管理员处理微信群的管理问题。

现在,我们的微信机器人已经正式接管了 Linux 中国的所有微信群管理,所以,在这里,我隆重为大家介绍这款机器人 —— LCBot。

LCBot 是由 Linux 中国旗下翻译组 LCTT 的开发团队开发的一个为 Linux 中国服务的微信机器人,主要为 Linux 中国下的微信群做管理、维护等工作。

可以说,有了微信机器人,微信群的运营和管理会更加方便,目前我们已经支持的功能有:

  • 根据关键字自动发送加群邀请
  • 接受若干指定的管理员的指令踢出某些群成员

已经排期计划的功能:

  • 根据设定的规则,自动踢人功能(如刷图、长期潜水、红包小偷等)
  • 微信群将满时自动创建分群,自动分流新入群成员
  • 自动创建主题群
  • 自动创建临时群,如果不能达成长久存在条件,自动解散
  • 自动分享公众号推送内容
  • 被踢用户加入黑名单,视情况分别处于不同处罚:一次性踢出、永久踢出、全部群永久踢出
  • ……

开源

技术的红利不止我们需要享受,在这里我们也将这款产品介绍给您,希望 LCBot 可以帮助您更好的运营您的微信群!LCBot 的开源代码在: https://github.com/LCTT/LCBot ,欢迎大家拿去使用和提交 issue。

在此,我们要感谢 @youfou 开源了好用的 wxpy 库!感谢 @youfou 在项目开发中对我们的支持!

如果您在使用后,觉得非常好用,不妨来给我们点个 Star ,支持我们的项目更好的发展。

体验

请扫描如下微信二维码,将我们的微信机器人“小二 » Linux中国”(微信号“linux\_cn”)添加为好友:

验证信息输入下述关键字,或给机器人发送如下关键字,即可获得加群邀请。

已支持关键词

关键词对应群关键词对应群
运维Linux 中国 ◆ 运维群DBALinux 中国 ◆ DBA交流群
开发Linux 中国 ◆ 开发群PHPLinux 中国 ◆ PHP 交流群
云计算Linux 中国 ◆ 云计算群GolangLinux 中国 ◆ Golang 交流群
学生Linux 中国 ◆ 学生群DockerLinux 中国 ◆ Docker 交流群
安全Linux 中国 ◆ 网络安全群LFSLinux 中国 ◆ LFS 交流群
机器人Linux 中国 ◆ 微信机器人群
嵌入式Linux ◆ 嵌入式群
运维密码“运维密码” 用户体验群

效果

和机器人对话

参与项目开发

目前我们的项目正在不断的迭代中,欢迎参与项目开发,提交 issue、 pull request 。

欢迎大家在 issue 中提交合理的需求,我们将排期开发!

如果您在使用中有问题,也欢迎你加入“Linux 中国 ◆ 微信机器人群”,参与到我们的讨论中来。

IDE(集成开发环境)就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件。 IDE 将所有开发工作集中到一个程序中,使得程序员可以编写、修改、编译、部署以及调试程序。

在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE。

什么是 bash-support.vim 插件?

bash-support 是一个高度定制化的 vim 插件,它允许你插入:文件头、补全语句、注释、函数、以及代码块。它也使你可以进行语法检查、使脚本可执行、一键启动调试器;而完成所有的这些而不需要关闭编辑器。

它使用快捷键(映射),通过有组织地、一致的文件内容编写/插入,使得 bash 脚本编程变得有趣和愉快。

插件当前版本是 4.3,4.0 版本 重写了之前的 3.12.1 版本,4.0 及之后的版本基于一个全新的、更强大的、和之前版本模板语法不同的模板系统。

如何在 Linux 中安装 Bash-support 插件

用下面的命令下载最新版本的 bash-support 插件:

$ cd Downloads
$ curl http://www.vim.org/scripts/download_script.php?src_id=24452 >bash-support.zip

按照如下步骤安装;在你的主目录创建 .vim 目录(如果它不存在的话),进入该目录并提取 bash-support.zip 内容:

$ mkdir ~/.vim
$ cd .vim
$ unzip ~/Downloads/bash-support.zip

下一步,在 .vimrc 文件中激活它:

$ vi ~/.vimrc

并插入下面一行:

filetype plug-in on   
set number   # 可选,增加这行以在 vim 中显示行号

如何在 Vim 编辑器中使用 Bash-support 插件

为了简化使用,通常使用的结构和特定操作可以分别通过键映射来插入/执行。 ~/.vim/doc/bashsupport.txt 和 ~/.vim/bash-support/doc/bash-hotkeys.pdf 或者 ~/.vim/bash-support/doc/bash-hotkeys.tex 文件中介绍了映射。

重要:

  1. 所有映射(\+字符 组合)都是针对特定文件类型的:为了避免和其它插件的映射冲突,它们只适用于 sh 文件。
  2. 使用键映射的时候打字速度也有关系,引导符 \ 和后面字符的组合要在特定短时间内才能识别出来(很可能少于 3 秒 - 基于假设)。

下面我们会介绍和学习使用这个插件一些显著的功能:

如何为新脚本自动生成文件头

看下面的示例文件头,为了要在你所有的新脚本中自动创建该文件头,请按照以下步骤操作。

脚本示例文件头选项

脚本示例文件头选项

首先设置你的个人信息(作者名称、作者参考、组织、公司等)。在一个 Bash 缓冲区(像下面这样打开一个测试脚本)中使用映射 \ntw 启动模板设置向导。

选中选项 1 设置个性化文件,然后按回车键。

$ vi test.sh

在脚本文件中设置个性化信息

在脚本文件中设置个性化信息

之后,再次输入回车键。然后再一次选中选项 1 设置个性化文件的路径并输入回车。

设置个性化文件路径

设置个性化文件路径

设置向导会把目标文件 .vim/bash-support/rc/personal.templates 拷贝到 .vim/templates/personal.templates,打开并编辑它,在这里你可以输入你的信息。

按 i 键像截图那样在单引号中插入合适的值。

在脚本文件头添加信息

在脚本文件头添加信息

一旦你设置了正确的值,输入 :wq 保存并退出文件。关闭 Bash 测试脚本,打开另一个脚本来测试新的配置。现在文件头中应该有和下面截图类似的你的个人信息:

$ vi test2.sh

自动添加文件头到脚本

自动添加文件头到脚本

添加 Bash-support 插件帮助信息

为此,在 Vim 命令行输入下面的命令并按回车键,它会创建 .vim/doc/tags 文件:

:helptags $HOME/.vim/doc/

在 Vi 编辑器添加插件帮助

在 Vi 编辑器添加插件帮助

如何在 Shell 脚本中插入注释

要插入一个块注释,在普通模式下输入 \cfr:

添加注释到脚本

添加注释到脚本

如何在 Shell 脚本中插入语句

下面是一些用于插入语句的键映射(n – 普通模式, i – 插入模式,v 可视模式):

  1. \sc – case in … esac (n, i)
  2. \sei – elif then (n, i)
  3. \sf – for in do done (n, i, v)
  4. \sfo – for ((…)) do done (n, i, v)
  5. \si – if then fi (n, i, v)
  6. \sie – if then else fi (n, i, v)
  7. \ss – select in do done (n, i, v)
  8. \su – until do done (n, i, v)
  9. \sw – while do done (n, i, v)
  10. \sfu – function (n, i, v)
  11. \se – echo -e "…" (n, i, v)
  12. \sp – printf "…" (n, i, v)
  13. \sa – 数组元素, ${.[.]} (n, i, v) 和其它更多的数组功能。

插入一个函数和函数头

输入 \sfu 添加一个新的空函数,然后添加函数名并按回车键创建它。之后,添加你的函数代码。

在脚本中插入新函数

在脚本中插入新函数

为了给上面的函数创建函数头,输入 \cfu,输入函数名称,按回车键并填入合适的值(名称、介绍、参数、返回值):

在脚本中创建函数头

在脚本中创建函数头

更多关于添加 Bash 语句的例子

下面是一个使用 \si 插入一条 if 语句的例子:

在脚本中插入语句

在脚本中插入语句

下面的例子显示使用 \se 添加一条 echo 语句:

在脚本中添加 echo 语句

在脚本中添加 echo 语句

如何在 Vi 编辑器中使用运行操作

下面是一些运行操作键映射的列表:

  1. \rr – 更新文件,运行脚本(n, i)
  2. \ra – 设置脚本命令行参数 (n, i)
  3. \rc – 更新文件,检查语法 (n, i)
  4. \rco – 语法检查选项 (n, i)
  5. \rd – 启动调试器(n, i)
  6. \re – 使脚本可/不可执行(*) (n, i)

使脚本可执行

编写完脚本后,保存它然后输入 \re 和回车键使它可执行。

使脚本可执行

使脚本可执行

如何在 Bash 脚本中使用预定义代码片段

预定义代码片段是为了特定目的包含了已写好代码的文件。为了添加代码段,输入 \nr 和 \nw 读/写预定义代码段。输入下面的命令列出默认的代码段:

$ .vim/bash-support/codesnippets/

代码段列表

代码段列表

为了使用代码段,例如 free-software-comment,输入 \nr 并使用自动补全功能选择它的名称,然后输入回车键:

添加代码段到脚本

添加代码段到脚本

创建自定义预定义代码段

可以在 ~/.vim/bash-support/codesnippets/ 目录下编写你自己的代码段。另外,你还可以从你正常的脚本代码中创建你自己的代码段:

  1. 选择你想作为代码段的部分代码,然后输入 \nw 并给它一个相近的文件名。
  2. 要读入它,只需要输入 \nr 然后使用文件名就可以添加你自定义的代码段。

在当前光标处查看内建和命令帮助

要显示帮助,在普通模式下输入:

  1. \hh – 内建帮助
  2. \hm – 命令帮助

查看内建命令帮助

查看内建命令帮助

更多参考资料,可以查看文件:

~/.vim/doc/bashsupport.txt  #在线文档的副本
~/.vim/doc/tags

就是这些啦,在这篇文章中,我们介绍了在 Linux 中使用 Bash-support 插件安装和配置 Vim 为一个 Bash-IDE 的步骤。快去发现这个插件其它令人兴奋的功能吧,一定要在评论中和我们分享哦。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S 爱好者、Linux 系统管理员、网络开发人员,现在也是 TecMint 的内容创作者,她喜欢和电脑一起工作,坚信共享知识。


via: http://www.tecmint.com/use-vim-as-bash-ide-using-bash-support-in-linux/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

cpustat 是 Linux 下一个强大的系统性能测量程序,它用 Go 编程语言 编写。它通过使用 “用于分析任意系统的性能的方法(USE)”,以有效的方式显示 CPU 利用率和饱和度。

它高频率对系统中运行的每个进程进行取样,然后以较低的频率汇总这些样本。例如,它能够每 200ms 测量一次每个进程,然后每 5 秒汇总这些样本,包括某些度量的最小/平均/最大值(min/avg/max)。

推荐阅读: 监控 Linux 性能的 20 个命令行工具

cpustat 能用两种方式输出数据:定时汇总的纯文本列表和每个取样的彩色滚动面板。

如何在 Linux 中安装 cpustat

为了使用 cpustat,你的 Linux 系统中必须安装有 Go 语言(GoLang),如果你还没有安装它,点击下面的链接逐步安装 GoLang:

安装完 Go 以后,输入下面的 go get 命令安装 cpustat,这个命令会将 cpustat 二进制文件安装到你的 GOBIN 变量(所指的路径):

# go get github.com/uber-common/cpustat

如何在 Linux 中使用 cpustat

安装过程完成后,如果你不是以 root 用户控制系统,像下面这样使用 sudo 命令获取 root 权限运行 cpustat,否则会出现下面显示的错误信息:

$ $GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.

注意:想要像你系统中已经安装的其它 Go 程序那样运行 cpustat,你需要把 GOBIN 变量添加到 PATH 环境变量。打开下面的链接学习如何在 Linux 中设置 PATH 变量。

cpustat 是这样工作的:在每个时间间隔查询 /proc 目录获取当前进程 ID 列表,然后:

  • 对于每个 PID,读取 /proc/pid/stat,然后计算和前一个样本的差别。
  • 如果是一个新的 PID,读取 /proc/pid/cmdline。
  • 对于每个 PID,发送 netlink 消息获取 taskstat,计算和前一个样本的差别。
  • 读取 /proc/stat 获取总的系统统计信息。

根据获取所有这些统计信息所花费的时间,会调整每个休息间隔。另外,通过每次取样之间实际经过的时间,每个样本也会记录它用于测量的时间。这可用于计算 cpustat 自身的延迟。

当不带任何参数运行时,cpustat 默认会显示以下信息:样本间隔:200ms;汇总间隔:2s(10 个样本);显示前 10 个进程;用户过滤器:all;pid 过滤器:all。正如下面截图所示:

$ sudo $GOBIN/cpustat 

cpustat - 监控 Linux CPU 使用

cpustat – 监控 Linux CPU 使用

在上面的输出中,之前显示的系统范围的度量字段意义如下:

  • usr - 用户模式运行时间占 CPU 百分比的 min/avg/max 值。
  • sys - 系统模式运行时间占 CPU 百分比的 min/avg/max 值。
  • nice - 用户模式低优先级运行时间占 CPU 百分比的 min/avg/max 值。
  • idle - 用户模式空闲时间占 CPU 百分比的 min/avg/max 值。
  • iowait - 等待磁盘 IO 的 min/avg/max 延迟时间。
  • prun - 处于可运行状态的 min/avg/max 进程数量(同“平均负载”一样)。
  • pblock - 被磁盘 IO 阻塞的 min/avg/max 进程数量。
  • pstat - 在本次汇总间隔里启动的进程/线程数目。

同样还是上面的输出,对于一个进程,不同列的意思分别是:

  • name - 从 /proc/pid/stat 或 /proc/pid/cmdline 获取的进程名称。
  • pid - 进程 ID,也被用作 “tgid” (线程组 ID)。
  • min - 该 pid 的用户模式+系统模式时间的最小样本,取自 /proc/pid/stat。比率是 CPU 的百分比。
  • max - 该 pid 的用户模式+系统模式时间的最大样本,取自 /proc/pid/stat。
  • usr - 在汇总期间该 pid 的平均用户模式运行时间,取自 /proc/pid/stat。
  • sys - 在汇总期间该 pid 的平均系统模式运行时间,取自 /proc/pid/stat。
  • nice - 表示该进程的当前 “nice” 值,取自 /proc/pid/stat。值越高表示越好(nicer)。
  • runq - 进程和它所有线程可运行但等待运行的时间,通过 netlink 取自 taskstats。比率是 CPU 的百分比。
  • iow - 进程和它所有线程被磁盘 IO 阻塞的时间,通过 netlink 取自 taskstats。比率是 CPU 的百分比,对整个汇总间隔平均。
  • swap - 进程和它所有线程等待被换入(swap in)的时间,通过 netlink 取自 taskstats。Scale 是 CPU 的百分比,对整个汇总间隔平均。
  • vcx 和 icx - 在汇总间隔期间进程和它的所有线程自动上下文切换总的次数,通过 netlink 取自 taskstats。
  • rss - 从 /proc/pid/stat 获取的当前 RSS 值。它是指该进程正在使用的内存数量。
  • ctime - 在汇总间隔期间等待子进程退出的用户模式+系统模式 CPU 时间总和,取自 /proc/pid/stat。 注意长时间运行的子进程可能导致混淆这个值,因为只有在子进程退出后才会报告时间。但是,这对于计算高频 cron 任务以及 CPU 时间经常被多个子进程使用的健康检查非常有帮助。
  • thrd - 汇总间隔最后线程的数目,取自 /proc/pid/stat。
  • sam - 在这个汇总间隔期间该进程的样本数目。最近启动或退出的进程可能看起来比汇总间隔的样本数目少。

下面的命令显示了系统中运行的前 10 个 root 用户进程:

$ sudo $GOBIN/cpustat -u root

查找 root 用户正在运行的进程

查找 root 用户正在运行的进程

要想用更好看的终端模式显示输出,像下面这样用 -t 选项:

$ sudo $GOBIN/cpustat -u root -t

root 用户正在运行的进程

root 用户正在运行的进程

要查看前 x 个进程(默认是 10),你可以使用 -n 选项,下面的命令显示了系统中 正在运行的前 20 个进程:

$ sudo $GOBIN/cpustat -n 20 

你也可以像下面这样使用 -cpuprofile 选项将 CPU 信息写到文件,然后用 cat 命令查看文件:

$ sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
$ cat cpuprof.txt

要显示帮助信息,像下面这样使用 -h 选项:

$ sudo $GOBIN/cpustat -h

可以从 cpustat 的 Github 仓库:https://github.com/uber-common/cpustat 查阅其它资料。

就是这些!在这篇文章中,我们向你展示了如何安装和使用 cpustat,Linux 下的一个有用的系统性能测量工具。通过下面的评论框和我们分享你的想法吧。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S(Free and Open-Source Software) 爱好者,一个 Linux 系统管理员、web 开发员,现在也是 TecMint 的内容创建者,他喜欢和电脑一起工作,他相信知识共享。


via: http://www.tecmint.com/cpustat-monitors-cpu-utilization-by-processes-in-linux/

作者:Aaron Kili 译者:ictlyh 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

随着需求不断的增加,数据管理也将变得越发复杂。

从 队列 ( list ) 到 集合 ( set ) ,甚至用 映射 ( map ) 来解决……

迟早有一天,坐在办公桌前的鸭子爸爸发现,这些只不过都是个“ 堆栈 ( stack ) ”而已~

via: https://turnoff.us/geek/java-collections/

作者:Daniel Stori 译者&点评:martin2011qi 校对&合成:GHLandy

本文由 LCTT 原创编译,Linux中国 荣誉推出