SK 发布的文章

有很多监控工具可用来监控本地和远程 Linux 系统,一个很好的例子是 Cockpit。但是,这些工具的安装和使用比较复杂,至少对于新手管理员来说是这样。新手管理员可能需要花一些时间来弄清楚如何配置这些工具来监视系统。如果你想要以快速且粗略地在局域网中一次监控多台主机,你可能需要了解一下 “rwho” 工具。只要安装了 rwho 实用程序,它将立即快速地监控本地和远程系统。你什么都不用配置!你所要做的就是在要监视的系统上安装 “rwho” 工具。

请不要将 rwho 视为功能丰富且完整的监控工具。这只是一个简单的工具,它只监视远程系统的“正常运行时间”(uptime),“负载”(load)和登录的用户。使用 “rwho” 使用程序,我们可以发现谁在哪台计算机上登录;一个被监视的计算机的列表,列出了正常运行时间(自上次重新启动以来的时间);有多少用户登录了;以及在过去的 1、5、15 分钟的平均负载。不多不少!而且,它只监视同一子网中的系统。因此,它非常适合小型和家庭办公网络。

在 Linux 中监控多台主机

让我来解释一下 rwho 是如何工作的。每个在网络上使用 rwho 的系统都将广播关于它自己的信息,其他计算机可以使用 rwhod 守护进程来访问这些信息。因此,网络上的每台计算机都必须安装 rwho。此外,为了分发或访问其他主机的信息,必须允许 rwho 端口(例如端口 513/UDP)通过防火墙/路由器。

好的,让我们来安装它。

我在 Ubuntu 16.04 LTS 服务器上进行了测试,rwho 在默认仓库中可用,所以,我们可以使用像下面这样的 APT 软件包管理器来安装它。

$ sudo apt-get install rwho

在基于 RPM 的系统如 CentOS、 Fedora、 RHEL 上,使用以下命令来安装它:

$ sudo yum install rwho

如果你在防火墙/路由器之后,确保你已经允许使用 rwhod 513 端口。另外,使用命令验证 rwhod 守护进程是否正在运行:

$ sudo systemctl status rwhod

如果它尚未启动,运行以下命令启用并启动 rwhod 服务:

$ sudo systemctl enable rwhod
$ sudo systemctl start rwhod

现在是时候来监视系统了。运行以下命令以发现谁在哪台计算机上登录:

$ rwho
ostechni ostechnix:pts/5 Mar 12 17:41
root server:pts/0 Mar 12 17:42

正如你所看到的,目前我的局域网中有两个系统。本地系统用户是 ostechnix (Ubuntu 16.04 LTS),远程系统的用户是 root (CentOS 7)。可能你已经猜到了,rwhowho 命令相似,但它会监视远程系统。

而且,我们可以使用以下命令找到网络上所有正在运行的系统的正常运行时间:

$ ruptime
ostechnix up 2:17, 1 user, load 0.09, 0.03, 0.01
server up 1:54, 1 user, load 0.00, 0.01, 0.05

这里,ruptime(类似于 uptime 命令)显示了我的 Ubuntu(本地) 和 CentOS(远程)系统的总运行时间。明白了吗?棒极了!以下是我的 Ubuntu 16.04 LTS 系统的示例屏幕截图:

你可以在以下位置找到有关局域网中所有其他机器的信息:

$ ls /var/spool/rwho/
whod.ostechnix whod.server

它很小,但却非常有用,可以发现谁在哪台计算机上登录,以及正常运行时间和系统负载详情。

建议阅读:

请注意,这种方法有一个严重的漏洞。由于有关每台计算机的信息都通过网络进行广播,因此该子网中的每个人都可能获得此信息。通常情况下可以,但另一方面,当有关网络的信息分发给非授权用户时,这可能是不必要的副作用。因此,强烈建议在受信任和受保护的局域网中使用它。

更多的信息,查找 man 手册页。

$ man rwho

好了,这就是全部了。更多好东西要来了,敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-quickly-monitor-multiple-hosts-in-linux/

作者:SK 译者:MjSeven 校对:wxy

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

我们不可能记住所有的命令,对吧?是的。除了经常使用的命令之外,我们几乎不可能记住一些很少使用的长命令。这就是为什么需要一些外部工具来帮助我们在需要时找到命令。在过去,我们已经点评了两个有用的工具,名为 “Bashpast” 和 “Keep”。使用 Bashpast,我们可以轻松地为 Linux 命令添加书签,以便更轻松地重复调用。而 Keep 实用程序可以用来在终端中保留一些重要且冗长的命令,以便你可以随时使用它们。今天,我们将看到该系列中的另一个工具,以帮助你记住命令。现在让我们认识一下 “Pet”,这是一个用 Go 语言编写的简单的命令行代码管理器。

使用 Pet,你可以:

  • 注册/添加你重要的、冗长和复杂的命令片段。
  • 以交互方式来搜索保存的命令片段。
  • 直接运行代码片段而无须一遍又一遍地输入。
  • 轻松编辑保存的代码片段。
  • 通过 Gist 同步片段。
  • 在片段中使用变量
  • 还有很多特性即将来临。

安装 Pet 命令行接口代码管理器

由于它是用 Go 语言编写的,所以确保你在系统中已经安装了 Go。

安装 Go 后,从 Pet 发布页面 获取最新的二进制文件。

wget https://github.com/knqyf263/pet/releases/download/v0.2.4/pet_0.2.4_linux_amd64.zip

对于 32 位计算机:

wget https://github.com/knqyf263/pet/releases/download/v0.2.4/pet_0.2.4_linux_386.zip

解压下载的文件:

unzip pet_0.2.4_linux_amd64.zip

对于 32 位:

unzip pet_0.2.4_linux_386.zip

pet 二进制文件复制到 PATH(即 /usr/local/bin 之类的)。

sudo cp pet /usr/local/bin/

最后,让它可以执行:

sudo chmod +x /usr/local/bin/pet

如果你使用的是基于 Arch 的系统,那么你可以使用任何 AUR 帮助工具从 AUR 安装它。

使用 Pacaur

pacaur -S pet-git

使用 Packer

packer -S pet-git

使用 Yaourt

yaourt -S pet-git

使用 Yay

yay -S pet-git

此外,你需要安装 fzfpeco 工具以启用交互式搜索。请参阅官方 GitHub 链接了解如何安装这些工具。

用法

运行没有任何参数的 pet 来查看可用命令和常规选项的列表。

$ pet
pet - Simple command-line snippet manager.

Usage:
 pet [command]

Available Commands:
 configure Edit config file
 edit Edit snippet file
 exec Run the selected commands
 help Help about any command
 list Show all snippets
 new Create a new snippet
 search Search snippets
 sync Sync snippets
 version Print the version number

Flags:
 --config string config file (default is $HOME/.config/pet/config.toml)
 --debug debug mode
 -h, --help help for pet

Use "pet [command] --help" for more information about a command.

要查看特定命令的帮助部分,运行:

$ pet [command] --help

配置 Pet

默认配置其实工作的挺好。但是,你可以更改保存片段的默认目录,选择要使用的选择器(fzf 或 peco),编辑片段的默认文本编辑器,添加 GIST id 详细信息等。

要配置 Pet,运行:

$ pet configure

该命令将在默认的文本编辑器中打开默认配置(例如我是 vim),根据你的要求更改或编辑特定值。

[General]
 snippetfile = "/home/sk/.config/pet/snippet.toml"
 editor = "vim"
 column = 40
 selectcmd = "fzf"

[Gist]
 file_name = "pet-snippet.toml"
 access_token = ""
 gist_id = ""
 public = false
~

创建片段

为了创建一个新的片段,运行:

$ pet new

添加命令和描述,然后按下回车键保存它。

Command> echo 'Hell1o, Welcome1 2to OSTechNix4' | tr -d '1-9'
Description> Remove numbers from output.

这是一个简单的命令,用于从 echo 命令输出中删除所有数字。你可以很轻松地记住它。但是,如果你很少使用它,几天后你可能会完全忘记它。当然,我们可以使用 CTRL+R 搜索历史记录,但 Pet 会更容易。另外,Pet 可以帮助你添加任意数量的条目。

另一个很酷的功能是我们可以轻松添加以前的命令。为此,在你的 .bashrc.zshrc 文件中添加以下行。

function prev() {
 PREV=$(fc -lrn | head -n 1)
 sh -c "pet new `printf %q "$PREV"`"
}

执行以下命令来使保存的更改生效。

source .bashrc

或者:

source .zshrc

现在,运行任何命令,例如:

$ cat Documents/ostechnix.txt | tr '|' '\n' | sort | tr '\n' '|' | sed "s/.$/\\n/g"

要添加上述命令,你不必使用 pet new 命令。只需要:

$ prev

将说明添加到该命令代码片段中,然后按下回车键保存。

片段列表

要查看保存的片段,运行:

$ pet list

编辑片段

如果你想编辑代码片段的描述或命令,运行:

$ pet edit

这将在你的默认文本编辑器中打开所有保存的代码片段,你可以根据需要编辑或更改片段。

[[snippets]]
 description = "Remove numbers from output."
 command = "echo 'Hell1o, Welcome1 2to OSTechNix4' | tr -d '1-9'"
 output = ""

[[snippets]]
 description = "Alphabetically sort one line of text"
 command = "\t prev"
 output = ""

在片段中使用标签

要将标签用于判断,使用下面的 -t 标志。

$ pet new -t
Command> echo 'Hell1o, Welcome1 2to OSTechNix4' | tr -d '1-9
Description> Remove numbers from output.
Tag> tr command examples

执行片段

要执行一个保存的片段,运行:

$ pet exec

从列表中选择你要运行的代码段,然后按回车键来运行它:

记住你需要安装 fzf 或 peco 才能使用此功能。

寻找片段

如果你有很多要保存的片段,你可以使用字符串或关键词如 below.qjz 轻松搜索它们。

$ pet search

输入搜索字词或关键字以缩小搜索结果范围。

同步片段

首先,你需要获取访问令牌。转到此链接 https://github.com/settings/tokens/new 并创建访问令牌(只需要 “gist” 范围)。

使用以下命令来配置 Pet:

$ pet configure

将令牌设置到 [Gist] 字段中的 access_token

设置完成后,你可以像下面一样将片段上传到 Gist。

$ pet sync -u
Gist ID: 2dfeeeg5f17e1170bf0c5612fb31a869
Upload success

你也可以在其他 PC 上下载片段。为此,编辑配置文件并在 [Gist] 中将 gist_id 设置为 GIST id。

之后,使用以下命令下载片段:

$ pet sync
Download success

获取更多细节,参阅帮助选项:

pet -h

或者:

pet [command] -h

这就是全部了。希望这可以帮助到你。正如你所看到的,Pet 使用相当简单易用!如果你很难记住冗长的命令,Pet 实用程序肯定会有用。

干杯!


via: https://www.ostechnix.com/pet-simple-command-line-snippet-manager/

作者:SK 译者:MjSeven 校对:wxy

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

由于诸如电源故障、网络故障或用户干预等各种原因,使用 scp 命令通过 SSH 复制的大型文件可能会中断、取消或损坏。有一天,我将 Ubuntu 16.04 ISO 文件复制到我的远程系统。不幸的是断电了,网络连接立即断了。结果么?复制过程终止!这只是一个简单的例子。Ubuntu ISO 并不是那么大,一旦电源恢复,我就可以重新启动复制过程。但在生产环境中,当你在传输大型文件时,你可能并不希望这样做。

而且,你不能继续使用 scp 命令恢复被中止的进度。因为,如果你这样做,它只会覆盖现有的文件。这时你会怎么做?别担心!这是 rsync 派上用场的地方!rsync 可以帮助你恢复中断的复制或下载过程。对于那些好奇的人,rsync 是一个快速、多功能的文件复制程序,可用于复制和传输远程和本地系统中的文件或文件夹。

它提供了大量控制其各种行为的选项,并允许非常灵活地指定要复制的一组文件。它以增量传输算法而闻名,它通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。 rsync 广泛用于备份和镜像,以及日常使用中改进的复制命令。

就像 scp 一样,rsync 也会通过 SSH 复制文件。如果你想通过 SSH 下载或传输大文件和文件夹,我建议您使用 rsync。请注意,应该在两边(远程和本地系统)都安装 rsync 来恢复部分传输的文件。

使用 rsync 恢复部分传输的文件

好吧,让我给你看一个例子。我将使用命令将 Ubuntu 16.04 ISO 从本地系统复制到远程系统:

$ scp Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso [email protected]:/home/sk/

这里,

  • sk是我的远程系统的用户名
  • 192.168.43.2 是远程机器的 IP 地址。

现在,我按下 CTRL+C 结束它。

示例输出:

[email protected]'s password: 
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c

正如你在上面的输出中看到的,当它达到 26% 时,我终止了复制过程。

如果我重新运行上面的命令,它只会覆盖现有的文件。换句话说,复制过程不会在我断开的地方恢复。

为了恢复复制过程,我们可以使用 rsync 命令,如下所示。

$ rsync -P -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso [email protected]:/home/sk/

示例输出:

[email protected]'s password:
sending incremental file list
ubuntu-16.04-desktop-amd64.iso
                   380.56M 26% 41.05MB/s 0:00:25

看见了吗?现在,复制过程在我们之前断开的地方恢复了。你也可以像下面那样使用 -partial 而不是 -P 参数。

$ rsync --partial -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso [email protected]:/home/sk/

这里,参数 -partial-P 告诉 rsync 命令保留部分下载的文件并恢复进度。

或者,我们也可以使用以下命令通过 SSH 恢复部分传输的文件。

$ rsync -avP Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso [email protected]:/home/sk/

或者,

rsync -av --partial Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso [email protected]:/home/sk/

就是这样了。你现在知道如何使用 rsync 命令恢复取消、中断和部分下载的文件。正如你所看到的,它也不是那么难。如果两个系统都安装了 rsync,我们可以轻松地通过上面描述的那样恢复复制的进度。

如果你觉得本教程有帮助,请在你的社交、专业网络上分享,并支持我们。还有更多的好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/how-to-resume-partially-downloaded-or-transferred-files-using-rsync/

作者:SK 译者:geekpi 校对:wxy

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

将文件从计算机传输到智能手机并不是什么大问题。你可以使用 USB 线将手机挂载到系统上,然后从文件管理器传输文件。此外,某些第三方应用程序(例如 KDE ConnectAirDroid)可帮助你轻松管理和传输系统中的文件至 Android 设备。今天,我偶然发现了一个名为 “Qr-filetransfer” 的超酷工具。它允许你通过扫描二维码通过 WiFi 将文件从计算机传输到移动设备而无须离开终端。是的,你没有看错! Qr-filetransfer 是一个使用 Go 语言编写的自由开源命令行工具。在这个简短的教程中,我们将学习如何使用 Qr-filetransfer 将文件从 Linux 传输到任何移动设备。

安装 Qr-filetransfer

首先,在你的系统上安装 Go 语言。

在 Arch Linux 及其衍生版上:

$ sudo pacman -S go

在基于 RPM 的系统(如 RHEL、CentOS、Fedora)上运行:

$ sudo yum install golang

或者:

$ sudo dnf install golang

在基于 DEB 的系统上,例如 Debian、Ubuntu、Linux Mint,你可以使用命令安装它:

$ sudo apt-get install golang

在 SUSE/openSUSE 上:

$ sudo zypper install golang

安装 Go 语言后,运行以下命令下载 Qr-filetransfer 应用。

$ go get github.com/claudiodangelis/qr-filetransfer

上述命令将在当前工作目录下的一个名为 go 的目录中下载 Qr-filetransfer GitHub 仓库的内容。

将 Qr-filetransfer 的二进制文件复制到 PATH 中,例如 /usr/local/bin/

$ sudo cp go/bin/qr-filetransfer /usr/local/bin/

最后,如下使其可执行:

$ sudo chmod +x /usr/local/bin/qr-filetransfer

通过扫描二维码将文件从计算机传输到移动设备

确保你的智能手机已连接到与计算机相同的 WiFi 网络。

然后,使用要传输的文件的完整路径启动 qt-filetransfer

比如,我要传输一个 mp3 文件。

$ qr-filetransfer Chill\ Study\ Beats.mp3

首次启动时,qr-filetransfer 会要求你选择使用的网络接口,如下所示。

Choose the network interface to use (type the number):
[0] enp5s0
[1] wlp9s0

我打算使用 wlp9s0 接口传输文件,因此我输入 “1”。qr-filetransfer 会记住这个选择,除非你通过 -force 参数或删除程序存储在当前用户的家目录中的 .qr-filetransfer.json 文件,否则永远不会再提示你。

然后,你将看到二维码,如下图所示。

打开二维码应用(如果尚未安装,请从 Play 商店安装任何一个二维码读取程序)并扫描终端中显示的二维码。

读取二维码后,系统会询问你是要复制链接还是打开链接。你可以复制链接并手动将其粘贴到移动网络浏览器上,或者选择“打开链接”以在移动浏览器中自动打开它。

共享链接打开后,该文件将下载到智能手机中。

如果文件太大,请压缩文件,然后传输它:

$ qr-filetransfer -zip /path/to/file.txt

要传输整个目录,请运行:

$ qr-filetransfer /path/to/directory

请注意,目录在传输之前会被压缩。

qr-filetransfer 只能将系统中的内容传输到移动设备,反之不能。这个项目非常新,所以会有 bug。如果你遇到了任何 bug,请在本指南最后给出的 GitHub 页面上报告。

干杯!


via: https://www.ostechnix.com/transfer-files-from-computer-to-mobile-devices-by-scanning-qr-codes/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

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

不久前,我们介绍了一个名为 “Betty” 的命令行虚拟助手。今天,我偶然发现了一个类似的实用程序,叫做 “Yoda”。Yoda 是一个命令行个人助理,可以帮助您在 Linux 中完成一些琐碎的任务。它是用 Python 编写的一个自由开源应用程序。在本指南中,我们将了解如何在 GNU/Linux 中安装和使用 Yoda。

安装 Yoda,命令行私人助理。

Yoda 需要 Python 2 和 PIP 。如果在您的 Linux 中没有安装 PIP,请参考下面的指南来安装它。只要确保已经安装了 python2-pip 。Yoda 可能不支持 Python 3。

注意:我建议你在 Python 虚拟环境下试用 Yoda。 不仅仅是 Yoda,应该总在虚拟环境中尝试任何 Python 应用程序,让它们不会干扰全局安装的软件包。 您可以按照上文链接中标题为“创建虚拟环境”一节中所述设置虚拟环境。

在您的系统上安装了 pip 之后,使用下面的命令克隆 Yoda 库。

$ git clone https://github.com/yoda-pa/yoda

上面的命令将在当前工作目录中创建一个名为 yoda 的目录,并在其中克隆所有内容。转到 yoda 目录:

$ cd yoda/

运行以下命令安装 Yoda 应用程序。

$ pip install .

请注意最后的点(.)。 现在,所有必需的软件包将被下载并安装。

配置 Yoda

首先,设置配置以将您的信息保存在本地系统上。

运行下面的命令:

$ yoda setup new

填写下列的问题:

Enter your name:
Senthil Kumar
What's your email id?
[email protected]
What's your github username?
sk
Enter your github password:
Password:
Where shall your config be stored? (Default: ~/.yoda/)

A configuration file already exists. Are you sure you want to overwrite it? (y/n)
y

你的密码在加密后保存在配置文件中,所以不用担心。

要检查当前配置,请运行:

$ yoda setup check

你会看到如下的输出。

Name: Senthil Kumar
Email: [email protected]
Github username: sk

默认情况下,您的信息存储在 ~/.yoda 目录中。

要删除现有配置,请执行以下操作:

$ yoda setup delete

用法

Yoda 包含一个简单的聊天机器人。您可以使用下面的聊天命令与它交互。

$ yoda chat who are you

样例输出:

Yoda speaks:
I'm a virtual agent

$ yoda chat how are you
Yoda speaks:
I'm doing very well. Thanks!

以下是我们可以用 Yoda 做的事情:

测试网络速度

让我们问一下 Yoda 关于互联网速度的问题。运行:

$ yoda speedtest
Speed test results:
Ping: 108.45 ms
Download: 0.75 Mb/s
Upload: 1.95 Mb/s

缩短和展开网址

Yoda 还有助于缩短任何网址:

$ yoda url shorten https://www.ostechnix.com/
Here's your shortened URL:
https://goo.gl/hVW6U0

要展开缩短的网址:

$ yoda url expand https://goo.gl/hVW6U0
Here's your original URL:
https://www.ostechnix.com/

阅读 Hacker News

我是 Hacker News 网站的常客。 如果你像我一样,你可以使用 Yoda 从下面的 Hacker News 网站阅读新闻。

$ yoda hackernews
News-- 1/513

Title-- Show HN: a Yelp for iOS developers
Description-- I came up with this idea "a Yelp for developers" when talking with my colleagues. My hypothesis is that, it would be very helpful if we know more about a library before choosing to use it. It's similar to that we want to know more about a restaurant by checki…
url-- https://news.ycombinator.com/item?id=16636071

Continue? [press-"y"]

Yoda 将一次显示一个项目。 要阅读下一条新闻,只需输入 y 并按下回车。

管理个人日记

我们也可以保留个人日记以记录重要事件。

使用命令创建一个新的日记:

$ yoda diary nn
Input your entry for note:
Today I learned about Yoda

要创建新笔记,请再次运行上述命令。

查看所有笔记:

$ yoda diary notes
Today's notes:
----------------
 Time | Note
--------|-----
16:41:41| Today I learned about Yoda

不仅仅是笔记,Yoda 还可以帮助你创建任务。

要创建新任务,请运行:

$ yoda diary nt
Input your entry for task:
Write an article about Yoda and publish it on OSTechNix

要查看任务列表,请运行:

$ yoda diary tasks
Today's agenda:
----------------
Status | Time | Text
-------|---------|-----
 O | 16:44:03: Write an article about Yoda and publish it on OSTechNix
----------------

Summary:
----------------
Incomplete tasks: 1
Completed tasks: 0

正如你在上面看到的,我有一个未完成的任务。 要将其标记为已完成,请运行以下命令并输入已完成的任务序列号并按下回车键:

$ yoda diary ct
Today's agenda:
----------------
Number | Time | Task
-------|---------|-----
 1 | 16:44:03: Write an article about Yoda and publish it on OSTechNix
Enter the task number that you would like to set as completed
1

您可以随时使用命令分析当前月份的任务:

$ yoda diary analyze
Percentage of incomplete task : 0
Percentage of complete task : 100
Frequency of adding task (Task/Day) : 3

有时候,你可能想要记录一个关于你爱的或者敬佩的人的个人资料。

记录关于爱人的笔记

首先,您需要设置配置来存储朋友的详细信息。 请运行:

$ yoda love setup

输入你的朋友的详细信息:

Enter their name:
Abdul Kalam
Enter sex(M/F):
M
Where do they live?
Rameswaram

要查看此人的详细信息,请运行:

$ yoda love status
{'place': 'Rameswaram', 'name': 'Abdul Kalam', 'sex': 'M'}

要添加你的爱人的生日:

$ yoda love addbirth
Enter birthday
15-10-1931

查看生日:

$ yoda love showbirth
Birthday is 15-10-1931

你甚至可以添加关于该人的笔记:

$ yoda love note
Avul Pakir Jainulabdeen Abdul Kalam better known as A. P. J. Abdul Kalam, was the 11th President of India from 2002 to 2007.

您可以使用命令查看笔记:

$ yoda love notes
Notes:
1: Avul Pakir Jainulabdeen Abdul Kalam better known as A. P. J. Abdul Kalam, was the 11th President of India from 2002 to 2007.

你也可以写下这个人喜欢的东西:

$ yoda love like
Add things they like
Physics, Aerospace
Want to add more things they like? [y/n]
n

要查看他们喜欢的东西,请运行:

$ yoda love likes
Likes:
1: Physics, Aerospace

跟踪资金费用

您不需要单独的工具来维护您的财务支出。 Yoda 会替您处理好。

首先,使用命令设置您的金钱支出配置:

$ yoda money setup

输入您的货币代码和初始金额:

Enter default currency code:
INR
{u'USD': 0.015338, u'IDR': 211.06, u'BGN': 0.024436, u'ISK': 1.5305, u'ILS': 0.053402, u'GBP': 0.010959, u'DKK': 0.093063, u'CAD': 0.020041, u'MXN': 0.28748, u'HUF': 3.8873, u'RON': 0.058302, u'MYR': 0.060086, u'SEK': 0.12564, u'SGD': 0.020208, u'HKD': 0.12031, u'AUD': 0.019908, u'CHF': 0.014644, u'KRW': 16.429, u'CNY': 0.097135, u'TRY': 0.06027, u'HRK': 0.092986, u'NZD': 0.021289, u'THB': 0.47854, u'EUR': 0.012494, u'NOK': 0.11852, u'RUB': 0.88518, u'JPY': 1.6332, u'CZK': 0.31764, u'BRL': 0.050489, u'PLN': 0.052822, u'PHP': 0.79871, u'ZAR': 0.1834}
₹
Indian rupee
Enter initial amount:
10000

要查看金钱配置,只需运行:

$ yoda money status
{'initial_money': 10000, 'currency_code': 'INR'}

让我们假设你买了一本价值 250 卢比的书。 要添加此费用,请运行:

$ yoda money exp
Spend 250 INR on books
output:

要查看花费,请运行:

$ yoda money exps
2018-03-21 17:12:31 INR 250 books

创建想法列表

创建一个新的想法:

$ yoda ideas add --task <task_name> --inside <project_name>

列出想法:

$ yoda ideas show

从任务中移除一个想法:

$ yoda ideas remove --task <task_name> --inside <project_name>

要完全删除这个想法,请运行:

$ yoda ideas remove --project <project_name>

学习英语词汇

Yoda 帮助你学习随机英语单词并追踪你的学习进度。

要学习一个新单词,请输入:

$ yoda vocabulary word

它会随机显示一个单词。 按回车键显示单词的含义。 再一次,Yoda 问你是否已经知道这个词的意思。 如果您已经知道,请输入“是”。 如果您不知道,请输入“否”。 这可以帮助你跟踪你的进度。 使用以下命令来了解您的进度。

$ yoda vocabulary accuracy

此外,Yoda 可以帮助您做其他一些事情,比如找到单词的定义和创建插卡以轻松学习任何内容。 有关更多详细信息和可用选项列表,请参阅帮助部分。

$ yoda --help

更多好的东西来了。请继续关注!

干杯!


via: https://www.ostechnix.com/yoda-the-command-line-personal-assistant-for-your-linux-system/

作者:SK 译者:amwps290 校对:wxy

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

有时,我会不小心的按下 SHIFT+DELETE来删除我的文件数据。是的,我是个笨蛋,没有再次确认下我实际准备要删除的东西。而且我太笨或者说太懒,没有备份我的文件数据。结果呢?数据丢失了!在一瞬间就丢失了。

这种事时不时就会发生在我身上。如果你和我一样,有个好消息告诉你。有个简单又有用的命令行工具叫chattrChange Attribute 的缩写),在类 Unix 等发行版中,能够用来防止文件和目录被意外的删除或修改。

通过给文件或目录添加或删除某些属性,来保证用户不能删除或修改这些文件和目录,不管是有意的还是无意的,甚至 root 用户也不行。听起来很有用,是不是?

在这篇简短的教程中,我们一起来看看怎么在实际应用中使用 chattr 命令,来防止文件和目录被意外删除。

Linux中防止文件和目录被意外删除和修改

默认,chattr 命令在大多数现代 Linux 操作系统中是可用的。

默认语法是:

chattr [operator] [switch] [file]

chattr 具有如下操作符:

  • 操作符 +,追加指定属性到文件已存在属性中
  • 操作符 -,删除指定属性
  • 操作符 =,直接设置文件属性为指定属性

chattr 提供不同的属性,也就是 aAcCdDeijsStTu。每个字符代表一个特定文件属性。

  • a – 只能向文件中添加数据
  • A – 不更新文件或目录的最后访问时间
  • c – 将文件或目录压缩后存放
  • C – 不适用写入时复制机制(CoW)
  • d – 设定文件不能成为 dump 程序的备份目标
  • D – 同步目录更新
  • e – extend 格式存储
  • i – 文件或目录不可改变
  • j – 设定此参数使得当通过 mount 参数:data=ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录在日志中
  • P – project 层次结构
  • s – 安全删除文件或目录
  • S – 即时更新文件或目录
  • t – 不进行尾部合并
  • T – 顶层目录层次结构
  • u – 不可删除

在本教程中,我们将讨论两个属性的使用,即 ai ,这个两个属性可以用于防止文件和目录的被删除。这是我们今天的主题,对吧?来开始吧!

防止文件被意外删除和修改

我先在我的当前目录创建一个file.txt文件。

$ touch file.txt

现在,我将给文件应用 i 属性,让文件不可改变。就是说你不能删除或修改这个文件,就算你是文件的拥有者和 root 用户也不行。

$ sudo chattr +i file.txt

使用lsattr命令检查文件已有属性:

$ lsattr file.txt

输出:

----i---------e---- file.txt

现在,试着用普通用户去删除文件:

$ rm file.txt

输出:

# 不能删除文件,非法操作
rm: cannot remove 'file.txt': Operation not permitted

我来试试 sudo 特权:

$ sudo rm file.txt

输出:

# 不能删除文件,非法操作
rm: cannot remove 'file.txt': Operation not permitted

我们试试追加写内容到这个文本文件:

$ echo 'Hello World!' >> file.txt

输出:

# 非法操作
bash: file.txt: Operation not permitted

试试 sudo 特权:

$ sudo echo 'Hello World!' >> file.txt

输出:

# 非法操作
bash: file.txt: Operation not permitted

你应该注意到了,我们不能删除或修改这个文件,甚至 root 用户或者文件所有者也不行。

要撤销属性,使用 -i 即可。

$ sudo chattr -i file.txt

现在,这不可改变属性已经被删除掉了。你现在可以删除或修改这个文件了。

$ rm file.txt

类似的,你能够限制目录被意外删除或修改,如下一节所述。

防止目录被意外删除和修改

创建一个 dir1 目录,放入文件 file.txt

$ mkdir dir1 && touch dir1/file.txt

现在,让目录及其内容(file.txt 文件)不可改变:

$ sudo chattr -R +i dir1

命令中,

  • -R – 递归使 dir1 目录及其内容不可修改
  • +i – 使目录不可修改

现在,来试试删除这个目录,要么用普通用户,要么用 sudo 特权。

$ rm -fr dir1
$ sudo rm -fr dir1

你会看到如下输出:

# 不可删除'dir1/file.txt':非法操作
rm: cannot remove 'dir1/file.txt': Operation not permitted

尝试用 echo 命令追加内容到文件,你成功了吗?当然,你做不到。

撤销此属性,输入:

$ sudo chattr -R -i dir1

现在你就能想平常一样删除或修改这个目录内容了。

防止文件和目录被意外删除,但允许追加操作

我们现已知道如何防止文件和目录被意外删除和修改了。接下来,我们将防止文件被删除但仅仅允许文件被追加内容。意思是你不可以编辑修改文件已存在的数据,或者重命名这个文件或者删除这个文件,你仅可以使用追加模式打开这个文件。

为了设置追加属性到文件或目录,我们像下面这么操作:

针对文件:

$ sudo chattr +a file.txt

针对目录:

$ sudo chattr -R +a dir1

一个文件或目录被设置了 a 这个属性就仅仅能够以追加模式打开进行写入。

添加些内容到这个文件以测试是否有效果。

$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt

查看文件内容使用cat命令

$ cat file.txt
$ cat dir1/file.txt

输出:

Hello World!

你将看到你现在可以追加内容。就表示我们可以修改这个文件或目录。

现在让我们试试删除这个文件或目录。

$ rm file.txt

输出:

# 不能删除文件'file.txt':非法操作
rm: cannot remove 'file.txt': Operation not permitted

让我们试试删除这个目录:

$ rm -fr dir1/

输出:

# 不能删除文件'dir1/file.txt':非法操作
rm: cannot remove 'dir1/file.txt': Operation not permitted

删除这个属性,执行下面这个命令:

针对文件:

$ sudo chattr -R -a file.txt

针对目录:

$ sudo chattr -R -a dir1/

现在,你可以想平常一样删除或修改这个文件和目录了。

更多详情,查看 man 页面。

man chattr

总结

保护数据是系统管理人员的主要工作之一。市场上有众多可用的免费和收费的数据保护软件。幸好,我们已经拥有这个内置命令可以帮助我们去保护数据被意外的删除和修改。在你的 Linux 系统中,chattr 可作为保护重要系统文件和数据的附加工具。

然后,这就是今天所有内容了。希望对大家有所帮助。接下来我将会在这提供其他有用的文章。在那之前,敬请期待。再见!


via: https://www.ostechnix.com/prevent-files-folders-accidental-deletion-modification-linux/

作者:SK 译者:yizhuoyan 校对:wxy

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