分类 技术 下的文章

如果你读过我写的使用GDB命令行调试器调试C/C++程序,你就会明白一个调试器对一段C/C++程序来说有多么的重要和有用。然而,如果一个像GDB这样的命令行对你而言听起来更像一个问题而不是一个解决方案的话,那么你也许会对Nemiver更感兴趣。Nemiver 是一款基于 GTK+ 的用于C/C++程序的图形化的独立调试器,它以GDB作为其后端。最令人赞赏的是其速度和稳定性,Nemiver是一个非常可靠,具备许多优点的调试工具。

Nemiver的安装

基于Debian发行版,它的安装时非常直接简单,如下:

$ sudo apt-get install nemiver 

在Arch Linux中安装如下:

$ sudo pacman -S nemiver 

在Fedora中安装如下:

$ sudo yum install nemiver 

如果你选择自己编译,GNOME 网站上有最新源码包。

最令人欣慰的是,它能够很好地与GNOME环境像结合。

Nemiver的基本用法

启动Nemiver的命令:

$ nemiver 

你也可以通过执行一下命令来启动:

$ nemiver [需要调试的可执行程序的路径] 

注意,如果在调试模式下编译程序(在 GCC 中使用 -g 选项)将会对 nemiver 更有帮助。

还有一个优点是Nemiver的加载很快,所以你马上就可以看到主屏幕的默认布局。

默认情况下,断点通常位于主函数的第一行。这样就可以空出时间让你去认识调试器的基本功能:

  • 执行到下一行 (按键是F6)
  • 执行到函数内部即停止(F7)
  • 执行到函数外部即停止(Shift+F7)

不过我个人喜欢“Run to cursor(运行至光标所在行)”,该选项使你的程序准确的运行至你光标所在行,它的默认按键是F11。

断点是很容易使用的。最快捷的方式是在一行代码上按下F8来设置一个断点。但是Nemiver在“Debug”菜单下也有一个更复杂的菜单,它允许你在一个特定的函数,某一行,二进制文件中的位置,或者类似异常、分支或者exec的事件上设置断点。

你也可以通过追踪来查看一个变量。在“Debug”中,你可以用一个表达式的名字来检查它的值,然后也可以通过将其添加到列表中以方便访问。这可能是最有用的一个功能,虽然我从未有兴趣将鼠标悬停在一个变量来获取它的值。值得注意的是,虽然鼠标悬停可以取到值,如果想要让它更好地工作,Nemiver是可以看到结构并给出所有成员的变量的赋值。

谈到方便地访问信息,我也非常欣赏这个程序的布局。默认情况下,代码在上半部分,功能区标签在下半部分。这可以让你访问终端的输出、上下文追踪器、断点列表、注册器地址、内存映射和变量控制。但是请注意在“Edit”-“Preferences”-“Layout”下你可以选择不同的布局,包括一个可以修改的动态布局。

自然,当你设置了全部断点,观察点和布局,您可以在“File”菜单下很方便地保存该会话,以便你下次打开时恢复。

Nemiver的高级用法

到目前为止,我们讨论的都是Nemiver的基本特征,例如,你马上开始调试一个简单的程序需要了解什么。如果你有更高的需求,特别是对于一些更加复杂的程序,你应该会对接下来提到的这些特征更感兴趣。

调试一个正在运行的进程

Nemiver允许你驳接到一个正在运行的进程进行调试。在“File”菜单,你可以筛选出正在运行的进程,并驳接到某个进程。

通过TCP连接远程调试一个程序

Nemiver支持远程调试,你可以在一台远程机器上设置一个轻量级调试服务器,然后你在另外一台机器上启动 nemiver 去调试运行在调试服务器上的程序。如果出于某些原因,你不能在远程机器上很好地驾驭 Nemiver或者GDB,那么远程调试对于你来说将非常有用。在“File”菜单下,指定二进制文件、共享库位置、远程地址和端口。

使用你的GDB二进制程序进行调试

如果你的Nemiver是自行编译的,你可以在“Edit(编辑)”-“Preferences(首选项)”-“Debug(调试)”下给GDB指定一个新的位置。如果你想在Nemiver下使用定制版本的GDB,那么这个选项对你来说是非常实用的。

跟随一个子进程或者父进程

当你的程序分支时,Nemiver是可以设置为跟随子进程或者父进程的。想激活这个功能,请到“Debugger”下面的“Preferences(首选项)”。

总而言之,Nemiver大概是我最喜欢的不在IDE里面的调试程序。在我看来,它甚至可以击败GDB,它和命令行程序一样深深吸引了我。所以,如果你从未使用过的话,我会强烈推荐你使用。我十分感谢它背后的开发团队给了我这么一个可靠、稳定的程序。

你对Nemiver有什么见解?你是否也考虑它作为独立的调试工具?或者仍然坚持使用IDE?让我们在评论中探讨吧。


via: http://xmodulo.com/debug-program-nemiver-debugger.html

作者:Adrien Brochard 译者:disylee 校对:wxy

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

作为一名python极客,我喜欢在github上挖掘新的用于linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具:wifi-linux。

我已经在wifi-linux上实验了大约两个小时,并且它工作的很好,但是我希望在不久的将来在作者那里看到一些单元测试,因为命令plot无法在我的电脑上工作,并且会导致一些问题。

什么是wifi-linux

根据github上作者账号的官方的 readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。

作者说可以在该程序中可以使用plot命令绘制RSSI 活动图形,但是不幸的是,这对我不可行。wifi-linux也支持其他的命令,比如bp 来加入一个断点,print会打印一些统计和启动开关

wifi-linux程序有下面这些依赖:

  • dbus-python
  • gnuplot-py

首先我们需要安装所有的包依赖以使它可以运行在我们的linux机器上。

安装wifi-linux需要的包

我尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。

pip install dbus-python

你可以试一下但是很有可能会在终端中出现下面的错误。

IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py'

我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具来安装Python DBUS。

sudo apt-get install python-dbus

上面的命令只有在有apt-get包管理器的机器中才可以使用,比如Debian和Ubuntu。

我们要安装的第二个依赖是gnuplot-py。下载并用tar解压,接着运行setup.py来安装包。

第一步是下载gnuplot-py。

wget http://prdownloads.sourceforge.net/gnuplot-py/gnuplot-py-1.8.tar.gz

接着使用tar工具解压。

tar xvf gnuplot-py-1.8.tar.gz

接着使用cd命令改变目录。

cd gnuplot-py-1.8

接着运行下面的命令在你的系统中安装gnuplot-py。

sudo setup.py install

安装完成后,你就可以在你的系统中运行wifi-linux了。只需下载并用下面的命令运行脚本。

用下面的命令下载wifi-linux到你的机器中。

wget https://github.com/dixel/wifi-linux/archive/master.zip

解压master.zip接着使用下面的命令运行list\_rsssi.py脚本。

python list_rssi.py

下面的截图说明wifi-linux在工作了。

wifi-linux to monitor wifi signal strength

命令bp用于像下面那样添加一个断点。

the bp command in wifi-linux

命令print可以用于在终端上显示你机器的状态。下面就是一个例子。

the print command


via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi-linux/

作者:Oltjano Terpollari 译者:geekpi 校对:wxy

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

slayChris Ausbrooks写的一款用于杀掉指定用户所有运行进程的命令行工具。slay对系统管理员而言在找出那些不应该运行进程的用户是很有用的。

slay在大多数发行版中都有官方仓库。

安装

Ubuntu 和它的衍生版

sudo apt-get install slay

Arch Linux 和它的衍生版

sudo pacman -S slay

Fedora 和它的衍生版

sudo yum install slay

用法

你应该有管理员权限来使用slay,

要杀掉指定用户的进程,你就要:

sudo slay <usename>

比如:我想杀掉用户amitooo的所有进程。

~ sudo slay amitooo
slay: Done.

当slay运行完成后,你应该就可以看到反馈了。

爽吧?!


via: http://www.unixmen.com/kill-processes-specific-user-slay/

作者:Enock Seth Nyamador 译者:geekpi 校对:wxy

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

nload 是一个 linux 自由软件工具,通过提供两个简单的图形来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个是进入流量,一个是流出流量。

我真的很喜欢用nload来在屏幕上显示当前的下载速度、总的流入量和平均下载速度等信息。nload工具的报告图非常容易理解,最重要的是这些信息真的非常有用。

在其使用手册上说到,在默认情况下它会监控所有网络设备。但是你可以轻松地指定你想要监控的设备,而且可以通过方向键在不同的网络设备之间进行转换。另外还有很多的选项可用,例如 ‘-t’选项以毫秒来设定刷新显示时间间隔(默认时间间隔值是500毫秒),‘-m’选项用来同时显示多个设备(在使用该选项时不会显示流量图),‘-u’选项用来设置显示流量数字的单位,另外还有许多其他的选项将会在本教程中探索和练习。

如何将 nload安装到你的linux机器上

UbuntuFedora 用户可以从默认的软件仓库中容易地安装。

在Ubuntu上使用以下命令进行安装。

sudo apt-get install nload

在Fedora上使用以下命令进行安装。

sudo yum install nload

CentOS用户该怎么办呢? 只需要在你的机器上输入以下命令就可以安装成功。

sudo yum install nload

以下的命令会帮助你在OpenBSD系统中安装nload。

sudo pkg_add -i nload

在 linux 机器上的另外一个非常有效的安装软件的方式就是编译源代码,下载并安装最新的版本意味着能够获得更好地性能、更酷的特性以及更少的bug。

如何通过源代码安装nload

在从源代码安装nload之前,你需要首先下载源代码。 我通常使用wget工具来进行下载--该工具在许多linux机器上默认可用。该免费工具帮助用户以非交互式的方式从网络上下载文件,并支持以下协议:

  • HTTP
  • HTTPS
  • FTP

通过以下命令来进入到/tmp目录中。

cd /tmp

然后在你的终端中输入以下命令就可以将最新版本的nload下载到你的linux机器上了。

wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz

如果你不喜欢使用wget工具,也可以通过简单的一个鼠标点击轻松地从官网上下载其源代码。

由于该软件非常轻巧,其下载过程几乎在瞬间就会完成。接下来的步骤就是通过tar工具来将下载的源代码包进行解压。

tar归档工具可以用来从磁带或硬盘文档中存储或解压文件,该工具有许多可用的选项,但是我们只需要下面的几个选项来执行我们的操作。

  1. -x 从归档中解压文件
  2. -v 使用繁琐模式运行--用来显示详细信息
  3. -f 用来指定归档文件

例如(LCTT 译注:tar 命令的参数前的“-”可以省略):

tar xvf example.tar

现在你学会了如何使用tar工具,我可以非常肯定你知道了如何从命令行中解压这个.tar文档。

tar xvf nload-0.7.4.tar.gz

之后使用cd命令来进入到nload*目录中:

cd nload*

在我的系统上看起来是这样的:

oltjano@baby:/tmp/nload-0.7.4$

然后运行下面这个命令来为你的系统配置该软件包:

./configure

此时会有“一大波僵尸”会在你的屏幕上显示出来,下面的一个屏幕截图描述了它的样子。

configuring packages for nload

在上述命令完成之后,通过下面的命令来编译nload。

make

compiling nload

好了,终于....,通过以下命令可以将nload安装在你的机器上了。

sudo make install

installing nload from source

安装好nload之后就是让你学习如何使用它的时间了。

如何使用nload

我喜欢探索,所以在你的终端输入以下命令.

nload

看到了什么?

我得到了下面的结果。

running nload

如上述截图可以看到,我得到了以下信息:

流入量

当前下载速度

nload running on linux

平均下载速度

nload running on linux

最小下载速度

nload running on linux

最大下载速度

nload running on linux

总的流入量按字节进行显示

流出量

类似的同样适用于流出量

一些nload有用的选项

使用选项-u来设置显示流量单位。

下面的命令会帮助你使用MBit/s显示单元

nload -u m

下面的屏幕截图显示了上述命令的结果。

nload running on linux

尝试以下命令然后看看有什么结果。

nload -u g

nload running on linux

同时还有一个-U选项。根据手册描述,该选项基本上与-u选项类似,只是用在合计数据。 我测试了这个命令,老实说,当你需要检查总的流入与流出量时非常有用。

nload -U G

nload running on linux

从上面的截图中可以看到,nload -U G 使用Gbyte来显示数据总量。

另外一个我喜欢使用的有用选项是 -t。 该选项用来设置刷新显示事件间隔,单位为毫秒,默认值为500毫秒。

我会通过下面的命令做一些小的实验。

nload -t 130

那么上述命令做了什么呢?它将刷新显示时间间隔设置为130毫秒。 通常推荐不要将该时间间隔值设置为小于100毫秒,因为nload在生成报告时计算错误。

另外的一个选项为 -a, 在你想要设置计算平均值的时间窗口的秒数时使用,默认该值为300秒。

那么当你想要监控指定的网络设备该如何呢? 非常容易, 像下面这样简单地指定设备或者列出想要监控的设备列表即可。

nload wlan0

nload monitoring wlan0 on linux

下面的语法可帮助你监控指定的多个设备。

nload [options] device1 device2 devicen

例如,使用下面的命令来监控eth0和eth1。

nload wlan0 eth0

如果不带选项来运行nload,那么它会监控所有自动检测到的设备,你可以通过左右方向键来显示其中的任何一个设备的信息。


via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/

作者:Oltjano Terpollari 译者:theo-l 校对:wxy

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

问题: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么?

根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、插槽/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。

1. /proc/cpuinfo

最简单的方法就是查看 /proc/cpuinfo ,这个虚拟文件展示的是可用CPU硬件的配置。

$ more /proc/cpuinfo 

通过查看这个文件,你能识别出物理处理器数(插槽)、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。

2. cpufreq-info

cpufreq-info命令(cpufrequtils包的一部分)从内核/硬件中收集并报告CPU频率信息。这条命令展示了CPU当前运行的硬件频率,包括CPU所允许的最小/最大频率、CPUfreq策略/统计数据等等。来看下CPU #0上的信息:

$ cpufreq-info -c 0 

3. cpuid

cpuid命令的功能就相当于一个专用的CPU信息工具,它能通过使用CPUID功能来显示详细的关于CPU硬件的信息。信息报告包括处理器类型/家族、CPU扩展指令集、缓存/TLB(译者注:传输后备缓冲器)配置、电源管理功能等等。

$ cpuid 

4. dmidecode

dmidecode命令直接从BIOS的DMI(桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/当前的时钟速度、(启用的)核心总数、L1/L2/L3缓存配置等等。

$ sudo dmidecode 

5. hardinfo

hardinfo是一个基于GUI的系统信息工具,它能展示给你一个易于理解的CPU硬件信息的概况,也包括你的系统其它的一些硬件组成部分。

$ hardinfo 

6. i7z

i7z是一个专供英特尔酷睿i3、i5和i7 CPU的实时CPU报告工具。它能实时显示每个核心的各类信息,比如睿频加速状态、CPU频率、CPU电源状态、温度检测等等。i7z运行在基于ncurses的控制台模式或基于QT的GUI的其中之一上。

$ sudo i7z 

8. likwid拓扑

likwid (Like I Knew What I'm Doing) 是一个用来测量、配置并显示硬件相关特性的命令行收集工具。其中的likwid拓扑结构能显示CPU硬件(线程/缓存/NUMA)的拓扑结构信息,还能识别处理器家族(比如:Intel Core 2, AMD Shanghai)。

9. lscpu

lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容,比如CPU、核心、套接字、NUMA节点的数量(线上/线下)。

$ lscpu 

10. lshw

lshw命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行,因为它是在BIOS系统里查询DMI(桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。

$ sudo lshw -class processor

11. lstopo

lstopo命令 (包括在 hwloc 包中) 以可视化的方式组成 CPU、缓存、内存和I/O设备的拓扑结构。这个命令用来识别处理器结构和系统的NUMA拓扑结构。

$ lstopo 

12. numactl

最初其被开发的目的是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。

$ numactl --hardware 

13. x86info

x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。

$ x86info --all


via: http://ask.xmodulo.com/check-cpu-info-linux.html

译者:ZTinoZ 校对:wxy

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

也许你没有从我先前关于 backupninjabackup-manager 的两篇文章中发现,我是一个超级备“粉”。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你为重要数据生成额外的拷贝所付出的时间和精力。

在这篇文章中,我将向你介绍 BackupPC,一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。

BackupPC 的特点

BackupPC 自带有一个健壮的 Web 界面,允许你以集中化的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复单个文件或整个备份。要恢复单个文件,你可以直接通过 Web 界面来下载任何先前备份的文件。不仅如此,客户端主机并不需要安装特别的客户端软件。在 Windows 客户端上, 使用的是原生的 SMB 协议,而对于 *nix 客户端,你将使用 rsync 或 通过 SSH, RSH 或 NFS 来使用 tar

安装 BackupPC

在 Debian,Ubuntu 和它们的衍生版本上,运行下面的命令:

# aptitude install backuppc 

在 Fedora上, 使用 yum 命令。请注意软件包名字对大小写敏感。

在 CentOS/RHEL 6 上,首先要启用 EPEL 软件仓库。在 CentOS/RHEL 7 上,请替代启用 Nux Dextop 软件仓库。然后接着使用 yum 命令:

# yum install BackupPC 

同往常一样,这两种包管理系统都会自动解决依赖问题。另外,作为安装过程中的一部分,你可能需要新配置或修改配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统:

通过空格键来确定你的选择,然后使用 tab 键移动到 Ok 选项并敲回车键。

接着类似于下面的截屏将会呈现在你眼前,通知你创建了一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(如果你需要,这个密码以后可以更改)。这里需要注意的是:这里创建了同样名为 ‘backuppc’的 HTTP 账户和常规的 Linux 账户,它们使用相同的密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 rsync 来执行备份任务。

你可以使用下面的命令来更改 HTTP 账户 ‘backuppc’ 的默认密码:

# htpasswd /path/to/hash/file backuppc 

至于常规的 ‘backuppc’ Linux账户,可以使用 passwd命令来更改它的默认密码:

# passwd backuppc 

需要提及的是:安装过程中会自动创建 Web 和程序的配置文件。

启动 BackupPC 并设置备份

首先,打开一个浏览器窗口并指向 http://<服务器名称或 IP 地址>/backuppc/ 。当弹出提示框时,输入先前向你创建的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页:

你想做的第一件事最有可能是通过新增一个客户端主机来备份。进入任务窗格中的 “编辑主机”选项。我们将添加两个客户端主机:

  • Host #1: CentOS 7 [IP 192.168.0.17]
  • Host #2: Windows 7 [IP 192.168.0.103]

我们将通过 SSH 使用 rsync来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 基于密钥认证 以及在我们的 Windows 主机中设置一个共享目录。

下面是关于如何为一个远程 CentOS 主机设置基于密钥认证的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并将其公钥传输给 CentOS 主机上的 root 账户。

# usermod -s /bin/bash backuppc
# su - backuppc
# ssh-keygen -t rsa
# ssh-copy-id [email protected] 

当弹出提示框时,键入 yes 并为 192.168.0.17 键入 root 用户的密码:

你需要一个远程的 CentOS 主机的 root 权限,以获得在该主机中的文件系统中写权限,以防要恢复的备份文件或目录的所有者为 root 账户。

一旦 CentOS 和 Windows 主机都准备完毕,使用 Web 界面将它们添加到 BackupPC:

下一步更改每个主机的备份设置:

接下来的图片展示了 Windows 主机的备份设置:

而接着的截图展示了 CentOS 主机的备份设置:

开始一个备份任务

为了开始备份,到每个主机的设定选项,然后点击“开始全备份”:

在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务成功完成后,在服务器的 /var/lib/backuppc/pc 目录下会创建一个命名为主机名或 IP 地址的目录。

我们也可以随意地在命令行中浏览这个目录中的文件,但存在一个更加简单的方式来查找和恢复这些文件。

恢复备份

要浏览这些保存的文件,进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你当前的机器上:

如若你想,你可以下载一个包含所有你想备份的内容的 zip 或 tar 文件:

或只是恢复文件:

总结

有句俗话说,"越简单,越好",而这正是 BackupPC 所提供的东西。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。

欢迎使用下面的评论框来留下你的评论和问题,假如你有的话。我总是乐于听取读者想说的话!


via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html

作者:Gabriel Cánepa 译者:FSSlc 校对:wxy

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