分类 技术 下的文章

以前,我很想要一个用管理员身份打开文件/目录的右键菜单选项(在nautilus文件管理器中)。原因在于,每个需有root权限的操作,我都必须返回命令行终端使用sudo。这并不是说我不习惯命令行,但是我仍希望至少有个能等价于sudo或su的东西。我四处搜索发现一个nautilus插件-- Nautilus-Gksu

NOTE -- 本文中所有的示例已经在Ubuntu 13.04上测试过。

Nautilus-Gksu

gksu-main

简短教程

Nautilus-Gksu插件在右键菜单中添加了一个有用的选项-- 以管理员身份打开(Open as administrator) 。这对nautilus文件管理器中处理文件和目录和有用。

例如,假设你想从nautilus文件管理器中打开root目录。想当然的双击将获取一个错误信息,如:

gksu-1

但是你安装nautilus gksu插件后,你需要做的是在目录上右击并选择“以管理员身份打开(Open as administrator)”选项。

gksu-2

一旦你点击了这个选项,你将被提示输入密码。

gksu-3

只要输入密码就行了。

下载/安装

正如前面提到的,这些天我的大多数文章用Ubuntu 13.04完成,允许我坦白的讲,通过之前推荐的方式安装这个插件很困难。

就是说像这样命令:

sudo apt-get install nautilus-gksu

它不工作且获得以下错误信息:

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package nautilus-gksu

我google了一下这个问题,发现我不是唯一遇到这个问题的,但是许多其他Ubuntu 13.04用户也面临一个类似的问题。不管怎样,我一直在寻找解决方案,直到我发现一个线索指向该解决方案。我在AskUbuntu上阅读完帖子并尝试在Ubuntu 12.04上提到的步骤。

这是帖子的一个截图:

gksu-4

阅读完上面的帖子,我使用以下步骤来完成安装:

  • 下载64位插件。[我的是64位系统]
  • 解压下载后的deb文件。
  • 执行以下命令(译者注:直接复制插件的.so文件到插件安装目录):
    sudo cp /home/himanshu/Downloads/nautilus-gksu2.0.2-5ubuntu2amd64/usr/lib/nautilus/extensions-2.0/libnautilus-gksu.so /usr/lib/nautilus/extensions-3.0/

这样插件就安装成功了。

总结

如果你的工作涉及到使用Nautilus文件管理器管理你的日常文件,那么这个插件是你的首选。虽然在Ubuntu 13.04上安装它并不容易,但是它仍然值得付出努力。

优点

让你右击使用root权限轻松打开任何文件或目录。

缺点

在Ubuntu 13.04上安装不容易。

via: http://mylinuxbook.com/nautilus-gksu/

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

译者:Vito 校对:wxy

有时候在Linux上使用基于GUI的程序,你必须在程序窗口和命令行窗口之间切换。这会消耗一些时间。将一个终端窗口嵌入到程序窗口内部是个很好的解决方案。我不知道在其他程序是否可以,但是,如果你为gedit寻找一个这样的解决方案,那么这儿有一个插件-- Embedded Terminal -- 能让你从gedit窗口内部访问命令行终端。

NOTE -- 这篇文章中使用Ubuntu 13.04作为例子。

简短教程

安装了这个插件后,可以让用户很容易地在编辑文件的同时访问命令行。

这是插件启用后的gedit窗口截图:

gedit-embedded-terminal-colored

如上,你可以看到在gedit窗口内部命令行操作与编辑文本文件集成到了一起。

下载/安装

通过以下步骤来正确地在gedit下载安装和配置embedded terminal插件。

步骤1

通过命令安装gedit插件:

sudo apt-get install gedit-plugins

步骤2

现在,在gedit窗口里,转到Edit(编辑)-->Preferences(首选项)-->Plugins(插件)并且启动Embedded Terminal插件。

gedit-embedded-terminal-enable

步骤3

在gedit窗口中点击View(视图)-->Bottom Panel(底部面板)

gedit-view-bottom-panel

你将在gedit窗口的底部面板看到一个嵌入式终端呈现出来。

gedit-default-embedded-terminal

唯一的问题是色调搭配不是很好,比如,白色的命令提示符在淡灰色背景下几乎看不清。接下来的步骤去修改色调搭配。

步骤4

打开dconf-editor,如果没有安装,通过命令来安装它:

sudo apt-get install dconf-tools

安装后,用下面命令来执行:

dconf-editor

在dconf editor窗口中,转到org-->gnome-->gedit-->plugins-->terminal并且取消选定use-theme-colors选项。

gedit-dconf-settings

步骤5

重启gedit

gedit-embedded-terminal-colored

可以看到,在浅色背景下的黑色的命令提示符。

优点

  • 从gedit窗口内部轻松访问终端
  • 作为一个插件,它能节约任何时间

缺点

  • 在初始化配置里色调搭配问题是个主要问题(译注,估计插件作者使用的深色配色方案的Gedit,因此没有意识到这个问题,期待以后的更新版本会解决这个问题)

总结

无论如何,在Linux中工作总是难以避开命令行。所以,在你常用的程序窗口中嵌入一个终端是一个好多的方法。这个gedit插件是个不错的小工具,它可以帮你节省一些时间。尝试它,它值得你安装。

via: http://mylinuxbook.com/embedded-terminal-a-gedit-plugin/

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

译者:Vito 校对:wxy

lmctfy (Let Me Contain That For you,发音是lem-kut-fee)是谷歌Google开发的容器栈,可以为Linux应用提供容器(container)。这些容器可以让一台机器上的不同应用使用相互隔离的资源,以独占的方式运行在同一台机器上。这些应用也可以拥有容器,因此能够创建和管理属于他们自己的子容器。

这项项目旨在提供一组以用户的意图为原点的高级API,来实现对容器概念的抽象化。这些创建的容器自身也通过继承也可以拥有了自己的容器、也能够被其他的用户程序所管理。

Lmctfy是为某些特定的场景(配置环境)设计、实现的,所以可能不能在所有场景(配置环境)中正常运作。我们的目标是为更多的场景(配置环境)提供更多的支持,所以你可以为这项项目贡献你的补丁或是在邮件列表中发送邮件,这样我们可以朝着既定的路线图前进。

lmctfy 内包含一个C++库和一个CLI(命令行界面程序)

最新进展

lmctfy 还是一个在beta阶段的应用,目前仍在主要开发中。最新的版本是0.1。她目前只支持CPU和内存资源的隔离。点击查看我们的路线图来了解各部分的开发情况,点击查看贡献

从此开始

这一节描述如何编译你的CLI,运行所有的UI测试,和初始化机器的细节。 CLI这节提供了一些CLI操作的例子,C++ 库描述了这个库的使用详情。

依赖

编译本程序需要使用make和g++4.7。 lmcfy使用了C++11,所以需要支持这项功能的编译器。我们在 Ubuntu 12.04+ 上测试过编译。如果有为其他环境的编译提供支持的补丁,我们很高兴而且希望这越多越好。

lmctfy 依赖下列几个库,需要这些库存在于你的计算机系统里。

编译CLI

编译lmctfy的CLI:

make -j <线程数> lmctfy

CLI程序会生成在 bin/lmctfy/cli/lmctfy

编译C++库

编译lmctfy的库:

make -j <线程数> liblmctfy.a

库文件会生成在 bin/liblmctfy.a.

运行测试

编译和运行所有的UI测试:

make -j <线程数> check

初始化

lmctfy已经在 Ubuntu 12.04+ 上的 3.33.8 内核上测试过。 lmctfy在一台机器的所有容器都是运行它的时候运转得最好,所以不建议让她运行在LXC或者其他container系统上(尽管在某些特殊得配置下这能够跑起来)。

为了运行lmctfy,我们必须首先初始化计算机。这只需要运行一次就可以,而且一般是在计算机第一次启动时候就完成了。当cgroup的hierarchies已经挂载了,接下来通常一个空的配置会可以让lmctfy自动监测到目前的挂载。

lmctfy init ""

如果cgroup的hierarchies没有被挂载,那么必须指明这些资源,这样lmctfy才可以挂载他们。目前版本需要以下cgroup的hierarchies资源cpu,cpuset,cpuacct,memory和freezer。 cpu和cpuacct 是目前唯一可以被共享挂载的,其他的必须被单独地挂载。具体配置说明可以查看lmctfy.proto中的InitSpec节。以下的例子是一个挂载了/dev/cgroup中的所有hierarachies的配置文件:

lmctfy init "
  cgroup_mount:{
    mount_path:'/dev/cgroup/cpu'
    hierarchy:CGROUP_CPU hierarchy:CGROUP_CPUACCT
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/cpuset' hierarchy:CGROUP_CPUSET
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/freezer' hierarchy:CGROUP_FREEZER
  }
  cgroup_mount:{
    mount_path:'/dev/cgroup/memory' hierarchy:CGROUP_MEMORY
  }"

这样,机器就可以被lmctfy使用、进行容器的操作。

容器的命名

容器的命名系统简化了文件系统的路径,因为以后只需要一系列容器的继承(容器的容器、子容器、子子容器)就可以了♪───O(≧∇≦)O──── ♪。

容器名称允许的字符集:

  • 英文字母+阿拉伯数字 ([a-zA-Z0-9]+)
  • 下划线 (\_)
  • 横县 (-)
  • 英文句号 (.)

绝对路径是从容器(比如是/sys/subcont)的根目录(/)开始计算的。容器的名字也可以是相对的(比如subcont)。一般地(除非特殊情况说明),都是沿用一般的文件路径方式。

例子

    /         : 容器的根目录
    /sys         : "sys" 容器
    /sys/sub    : "sub" 容器,"sys"容器的子容器
    .         : 当前的容器
    ./         : 当前的容器
    ..         : 当前的容器的父容器
    sub         : 当前的容器的"sub" 子容器
    ./sub     : 当前的容器的"sub" 子容器
    /sub         : "sub" 容器
    ../sibling    : 当前的父容器的“sibling”子容器

CLI

创建

创建一个容器:

lmctfy create <名称> <参数>

更完整的细节参见lmctfy.proto

例子 (创建一个内存限制在100MB的容器):

lmctfy create memory\_only "memory:{limit:100000000}"

销毁

销毁一个容器:

lmctfy destroy<名称>

列表

从根目录递归显示当前机器的所有容器:

lmctfy list containers -r /

你也可以只列出当前的子容器:

lmctfy list containers

运行

在一台容器中运行命令:

lmctfy run <名称> <命令行>

例子:

lmctfy run test "echo hello world"

lmctfy run /test/sub bash

lmctfy run -n /test "echo hello from a daemon"

其他

键入lmctfy help查看全部的命令和文档

C++ Library

此库包含了::containers::lmctfy::ContainerApi 用来创建、获取、销毁、监测::containers::lmctfy::Container类型的对象,并且被独立的容器相互交流。具体的lmctfy C++库的文档可以查看头文件lmctfy.h(你是认真的吗( ̄▽ ̄))。

路线图

lmctfy项目通过两个层(CL1、CL2)来实现一个容器栈。CL1围绕着驱动进程,并执行CL2制定的容器策略。CL1会为更高层创建和维护容器的抽象。她应当是唯一直接和内核交流以维护容器的层。 CL2发展和设定容器策略,她使用CL1来执行策略和操控容器。比如,CL2(后台进程)实现了一个策略:所有容器的CPU和内存使用总和不可以超过现提供的CPU和内存资源(以防止对内存资源的过度使用)。为了执行这条策略,她(CL2)会使用CL1(library/CLI)来创建带这条内存限制规则的容器。另一条对应的策略可能包括了允许过度使用X%的机器资源或者对不同资源的多重层次控制。

lmcfty项目现在提供了CL1组件,CL2还没有实现。

CL1

现在只提供高性能CPU和内存隔离。在我们的路线图中我们还需要实现以下几项:

  • 磁盘IO隔离: 这部分几乎完成了,但是我们还缺少控制器和资源处理器。
  • 网络隔离: 这部分和cgroup实现还在计划中。
  • 命名空间支援: 给所有命名空间支援并且整合到相关的资源中。
  • 根文件系统支援: 识别并建立根文件系统。
  • 磁盘镜像: 可以导入和导出容器的根文件系统的镜像。
  • 支持暂停/继续: 使用继承的freezer。
  • 还原点恢复: 可以建立还原点并恢复到不同机器的容器中。

CL2

最基础的CL2 应当有一个容器策略来保证在机器不允许超载运行情况下的资源合理分配。我们的目标是CL2最终实现提供不同层次的服务。在这个框架下一些层次可以比其他的获得更多好的服务。

  • 监控和统计支持。
  • 管理功能和功能检查。
  • 服务的质量保证和执行。

内核支持

lmctfy 最初的设计和实现是在一个自定义的内核上(一个原生linux内核外加一些列自选的补丁)上。由此,一些特性在这些内核补丁上跑得最理想。但是lmctfy应该在没有他们得情况下正常运行。她应当监测可用得内核支援并且与之适应。我们已经在原生的 Ubuntu3.33.8 系列内核上测试过。如果你发现在其他版本内核下的问题,请汇报。

一些相关的内核补丁:

  • CPU 延时: 这个补丁为cpu hierarchy增加了cpu.lat的cgroup 文件。她限制了cgroup能预测的CPU唤醒延时时间。
  • CPU 柱状图统计: 这个补丁为cpuacct hierarchy增加了cpuacct.histogram cgroup 文件。她为CPU计划行为提供了多种柱状图方案。
  • OOM 管理: 一系列的补丁,用于在内存用尽的情况下执行优先权。

贡献

对项目感到兴趣了?看看我们的路线图,看你是不是由很多想贡献的方向呢? 从此开始,你应该可以运行我们的程序。如果无法运行,请让我们知道,这样我们可以改进这份指南。

邮件列表

本项目的邮件列表是[email protected]。本邮件列表用来发布、讨论、一般性支持。

原文: https://github.com/google/lmctfy/

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

译者:Chilledheart 校对:wxy

最近几周里,我总是收到人们询问一些快速零散的问题。有时候一个人是在寻找一个有帮助的建议,或者一个具体的命令,或者一个命令行捷径,以完成一个特定的任务。本篇将介绍最近人们向我提出的三个问题,以及完成这些任务的简单方法。

第一个场景

我们要找到那些在过去的一个月中被改动过的文件,并将他们从当前的位置复制到另一个目录中去。

在这种情况下,能否精确的解决取决于你复制文件的时候是否保持了原来的文件树结构,还是你仅仅只是把所有文件全部复制到了一个指定的地方。如果我们只是想把所有的文件保存到一个文件夹中,或许这样做是为了将这些文件归档,那么我们可以使用find这条命令。通过使用find命令,我们能够根据文件被修改的时间查找到他们的位置,然后复制他们到指定的地方。这条命令看起来是这样:

find Documents -mtime -30 -exec cp "{}" Backup \;

上面这条命令会在Documents文件夹中查找在过去30天内被修改过的文件。这些文件之后将会被复制到另一个叫Backup的目录中去。find命令将会通过调用cp命令来执行复制这一操作。通过修改mtime这条参数,我们可以查找到最近某个时间内被修改过的文件,在上面这个例子中它被设定为在过去的30天内。

更多的时候,我们会想要在把文件复制到目标文件夹后,仍然能够保留源文件夹的目录结构。很多时候,人们都希望两个文件夹的内容同步,然后他们会运行一个脚本来使他们保持一致。这种情况下,我们可能会用到rsync这条命令了。这个工具会把新文件、修改过的文件从一个复制到另一个目录中去,同时保持源目录的展示结构:

rsync -a Documents/ Backup

上面的例子,它会先找到哪些文件在Documents中和Backup中都存在,以便不再复制这些不必要的文件。

第二个场景

有一个我们都会做的很普遍的工作,就是在一个文本文件中找到一个单词,然后用另一个单词把这个词在文本中的所有实例都替换掉。

比如,假设我有一个文档中提到一个人名叫“Becky”,但是我后来决定还是用稍微正式点的称呼“Rebecca”为好。对文件中的这个简单的改动,下面这条命令会起到作用:

perl -pi -e 's/Becky/Rebecca/' mydocument.txt

这条微型的Perl脚本会查询文档中所有“Becky”的实例,并且将之改为“Rebecca”。程序首先读取名为mydocument.txt这个要改动的文档,待修改完毕后再保存回去。

第三个场景

一个普遍关注的问题是,在一个硬盘要给别人或者被扔掉之前,需要对其中存储的敏感数据做些什么。

有些人会在电脑里保存一些银行的业务数据或者税务信息,那么这些数据最好在你的硬盘被转手到别人之前被彻底清理掉。现在有一些方法和工具可以让你使用。我最喜欢的一个是shred这条命令,它不仅能对单一文件进行处理,同样也能对整个设备进行处理。要重写一个文件里面的内容,我们可以这样运行shred

shred mytaxes.odt

上面这个例子中,它会移除文件里存的内容,但并不会把文件本身从硬盘中删除掉。如果要清除文件的内容同时删除掉这个文件,我们可以这样运行:

shred -u mytaxes.odt

需要强调的一点是,shred并不是在所有的文件系统中都能正常运行,尤其是那些带有日志功能的比较新的文件系统。在shred的操作手册中写明了哪些文件系统运行这个程序的时候会出问题。当处理敏感数据的时候,最好的方法也许是清除掉整张硬盘。shred同样也能办到。下面这个例子中,显示了如何移除掉我们电脑中第一块硬盘内的所有数据。使用这条命令一定要非常小心:

shred /dev/sda

via: http://distrowatch.com/weekly.php?issue=20130923

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

译者:markvv 校对:wxy

我们时不时需要帮助我们的朋友、家人、熟人、商业伙伴或者其他杂七杂八的人摆脱使用Windows的时候遇到的困境。尽管我们不像他们一样日常遇到各种问题,却经常是在他们有难的时候会求助的人。此外,甚至我们自己的Windows分区/驱动器也会出现问题(毕竟,有时候我们还是需要玩儿会儿游戏,而且,尽管Steam在努力,但Linux还不是游戏玩家的梦想之地),但愿不会如此。下面让我们看一两个我们可能会遇到的状况,那时我们可以用手边的Linux环境和一些NTFS分区恢复工具来修复它们。

简单修复

Windows 系统通常能很好的处理异常的“冷重启”(断电,关闭插线板的电源,或家里的小人儿手指随意按导致关机)。事实上,至今为止,最有效的修复Windows桌面问题的方法就是简单的重启系统。但是,Windows分区偶尔会显示系统需要进行驱动器一致性检测。不这么做的话,在几次重启后可能会引起文件系统状况恶化而使系统变得更糟。众所周知,Windows文件系统检查超级慢,而且经常不得不做好几次才能清理掉文件系统的“脏(dirty)”标志。

下面介绍一个叫“ntfsfix”的小工具,在基于Debian的系统(如 Ubuntu)可以通过下面的命令下载:

sudo apt-get install ntfsfix

或者在基于RPM的系统(如 Red Hat 或 CentOS)中通过下面的命令下载:

sudo yum install ntfsfix

这个‘ntfsfix’工具能快速的修复常见的错误以及NTFS分区不一致的问题。最常用的命令不用带任何参数。 它也可以报出来那些没有修复掉的项,然后我们能通过以下选项来修复它们:

  • -b: 清除磁盘上的坏的扇区 (可以在从一个旧磁盘往新的磁盘上克隆之后使用)
  • -d: 清除“脏”标志。“脏”标志是Linux不能挂载一个Windows分区的最常见的原因,通常发生在Windows断电前没有正常关机的情况。
  • -n: 除了在标准输出上显示它要完成的(换句话说,就是需要修复哪些)之外不做任何事。

过去Windows在启动前,用NTFS Disk Check来重置“脏”标志,常常要花几个小时。而‘ntfsfix’完成这个仅仅只需要大约三秒的时。

深度修复

不幸的是, 并非所有的问题都能被快速修复。事实上,有非常多的昂贵的磁盘恢复软件(通常属于“磁盘取证”类的软件,因为是在筛选损坏磁盘的时候调查人员使用的)用来修复那些加电但不能启动或者不能访问文件系统的磁盘。

有一个神奇的工具,免费而强大(而且如果在你本地电脑使用的话,可以放到一个可引导的救援Live CD里面)可以用来恢复你的Windows NTFS分区(而且,也能恢复EXT2/3/4,FAT/FAT32、exFAT、HFS和SunFS文件系统)。这个工具叫做TestDisk,在Debian和CentOS 的软件仓库中可用。Red Hat的软件仓库中并没有这个软件,但是安装它很容易。

sudo apt-get install testdisk

在基于 RPM 的系统(如 Red Hat 或 CentOS):

sudo yum install testdisk

这个工具简直无与伦比。如果驱动器加电并且运转了,甚至当驱动器有物理损坏时,这个小工具仍会奇迹般的取出一些文件来。 你可以通过一个旧式风格的命令“sudo testdisk /dev/sdX”来启动它,这里‘X’是你的驱动器号,之后你会看到下面的界面:

TestDisk在终端中运行

这个工具使用起来很简单,只需要根据菜单提示进行操作,而且它是交互式的。它会扫描你指定的某个分区,然后把重建的目录和文件显示出来,然后你可以标记,并存到另外一磁盘或者分区里面。我已经成功地从Windows,OSX和linux分区里面恢复过文件,这些分区要么因为这种或那种原因不能启动,要么害怕启动之后可能彻底完蛋,总之,这些分区用不了多久就会彻底完蛋了。

说句实在的,你不能期望文件系统100%的恢复,尤其是你的驱动器已经有损坏了,不过至少聊胜于无吧,而且不用像去请专业人员处理那样花很多钱(实际上一分也不用花)。所以如果你的驱动器现在有问题了,那你可以用下这个工具。

结束语

当你使用Linux的时候,磁盘修复要容易得多,当然也便宜的多,要么用USB转接器连接有问题的磁盘,要么从一个LiveCD启动,然后用CD里面的修复工具。本文中我们谈到的所有的工具都是免费使用,而且是在持续开发(更新)中。您可以在下面留言,谈一下你曾经不得不使用什么工具来从您磁盘的问题中恢复。

via: http://blog.linuxacademy.com/linux/ntfs-partition-repair-and-recovery-in-linux/

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

译者:younel0925 校对:jasminepeng

轻量级标记语言是一种时髦的系统语言,它用不同的方式标注文档,并且设计了简单易读的语法。事实上,它的语法非常之简单以至于任何人都能快速的掌握这些标记语言。这类语言最大的优点在于,用户使用一个普通的文本编辑器就可以在源文档中方便的输入注释文本。

这类语言使用简单的格式以及几个简单的特殊字符或字符串来标记段落标题、列表、表格、引用、字体等内容。

轻量级标记语言有许多用处。我们的生活被电子邮件、便笺、文章、报道以及推特包围着。许多人会先写好文本,然后重新排列、重新使用这些文本。轻量级标记语言在这方面非常有用,节约了大量手工敲打html标记的时间,加快了文字处理的速度。当读者想要阅读源文件和已输出文档时,他们也具有很强大的可读性。此外,他们也被频繁的使用于基于网络的出版物中,包括维基和博客等。

通过使用这些开源的工具,用户能够在很短的时间里做出高质量的注释文本,这不需要任何成本。代码完全是可移植的,并且可以输出成各种格式的文档。

现在,让我们来看看7个最常用的轻量级标记语言。下面每一个语言的标题都带有指向他自己首页的链接,里面有详细的描述,包括它本身语言特点的深度分析,以及一些相关资源的链接和评论。

  • Markdown --标记语言以及文本到HTML的转换工具
  • MultiMarkdown --基于Markdown但具有更多功能
  • AsciiDoc --漂亮的文本文档格式用于写作
  • Textile --被称为“人类网络文本生成器”
  • Texy --文本到XHTML格式化和转化库
  • Tome --作者的标记语言和工具包
  • reStructuredText --Docutils的标记语法分析组件

via: http://www.linuxlinks.com/article/20130921022758982/LightweightMarkupLanguages.html

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

译者:markvv 校对:Caroline