网站搜索

Linux 中 mkdir、tar 和 Kill 命令的 4 个有用提示


我们继续以传统方式完成一项任务,直到我们知道可以用另一种更好的方式来完成它。作为 Linux 技巧和技巧系列的继续,我在这里提供以下四个技巧,它们将在很多方面为您提供帮助。开始了!

1. 您应该创建一个类似于下面给出的长/复杂的目录树。实现这一目标最有效的方法是什么?

目录树结构的实现如下所示。

cd /home/$USER/Desktop
mkdir tecmint
mkdir tecmint/etc
mkdir tecmint/lib
mkdir tecmint/usr
mkdir tecmint/bin
mkdir tecmint/tmp
mkdir tecmint/opt
mkdir tecmint/var
mkdir tecmint/etc/x1
mkdir tecmint/usr/x2
mkdir tecmint/usr/x3
mkdir tecmint/tmp/Y1
mkdir tecmint/tmp/Y2
mkdir tecmint/tmp/Y3
mkdir tecmint/tmp/Y3/z

上述场景可以通过运行下面的 1-liner 命令来简单地实现。

mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}

要验证您可以使用tree命令。如果未安装,您可以 aptyum 包“tree”。

tree tecmint

我们可以使用上述方式创建任何复杂程度的目录树结构。请注意,它只不过是一个普通命令,但它使用 {} 创建目录层次结构。如果需要时和一般情况下在 shell 脚本内部使用,这可能会非常有用。

2. 在桌面 (/home/$USER/Desktop) 上创建一个文件(例如测试),并使用以下内容填充该文件。
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z

在这种情况下,普通用户会怎么做?

a. 他将首先创建文件,最好使用 touch 命令,如下所示:

touch /home/$USER/Desktop/test

b.他将使用文本编辑器打开文件,可以是nanovim或任何其他编辑器。

nano /home/$USER/Desktop/test

c.然后他会将上述文本放入此文件中,保存并退出。

因此,无论他/她花费多少时间,他至少需要3个步骤来执行上述场景。

一个聪明、经验丰富的 Linux 开发者会做什么?他只需在终端上一次性输入以下文本即可完成所有操作。他不需要单独执行每个动作。

cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF

您可以使用“cat”命令来检查文件及其内容是否创建成功。

cat /home/avi/Desktop/test

3. 我们经常在 Linux 上处理档案(特别是 TAR 球)。在许多情况下,我们必须在下载文件夹以外的某个位置使用该 TAR 球。在这种情况下我们做什么?

在这种情况下,我们通常会做两件事。

a. 复制/移动 tar 球并将其解压到目的地,如下所示:

cp firefox-37.0.2.tar.bz2 /opt/
or
mv firefox-37.0.2.tar.bz2 /opt/

b. cd 到 /opt/ 目录。

cd /opt/

c. 提取 tarball。

tar -jxvf firefox-37.0.2.tar.bz2 

我们可以反过来做。

我们将在原处提取 Tarball,并将提取的存档复制/移动到所需的目的地,如下所示:

tar -jxvf firefox-37.0.2.tar.bz2 
cp -R firefox/  /opt/
or
mv firefox/ /opt/

无论哪种情况,工作都需要两个或多个步骤才能完成。专业人员可以一步完成此任务,如下所示:

tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/

选项 -C 使 tar 将存档提取到指定文件夹(此处为 /opt/)。

不,这与选项(-C)无关,而是与习惯有关。养成在 tar 中使用选项 -C 的习惯。它会让你的生活变得轻松。从现在开始,不要移动存档或复制/移动提取的文件,只需将 TAR 球留在下载文件夹中并将其提取到您想要的任何位置。

4.我们如何以传统方式杀死进程?

在最一般的方式中,我们首先使用命令 ps -A 列出所有进程,并使用 grep 对其进行管道化以查找进程/服务(例如 apache2) >), 简单地说:

ps -A | grep -i apache2
样本输出
1006 ?        00:00:00 apache2
 2702 ?        00:00:00 apache2
 2703 ?        00:00:00 apache2
 2704 ?        00:00:00 apache2
 2705 ?        00:00:00 apache2
 2706 ?        00:00:00 apache2
 2707 ?        00:00:00 apache2

上面的输出显示了当前正在运行的所有 apache2 进程及其 PID,然后您可以在以下命令的帮助下使用这些 PID 来终止 apache2。

kill 1006 2702 2703 2704 2705 2706 2707

然后交叉检查名称为“apache2”的进程/服务是否正在运行,如下所示:

ps -A | grep -i apache2

不过,我们可以使用 pgreppkill 等实用程序以更易于理解的格式来完成此操作。您只需使用pgrep就可以找到有关进程的相关信息。假设您要查找 apache2 的进程信息,您可以简单地执行以下操作:

pgrep apache2
样本输出
15396
15400
15401
15402
15403
15404
15405

您还可以通过运行来根据 pid 列出进程名称。

pgrep -l apache2
样本输出
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2

使用pkill终止进程非常简单。您只需输入要杀死的资源的名称即可完成。我写了一篇关于 pkill 的文章,您可以在这里参考:https://www.how-to-kill-a-process-in-linux/。

要使用 pkill 终止进程(例如 apache2),您需要做的就是:

pkill apache2

您可以通过运行以下命令来验证 apache2 是否已被终止。

pgrep -l apache2

它返回提示符并且不打印任何内容,这意味着没有名为 apache2 的进程在运行。

这就是我现在的全部内容。上述所有讨论的要点还不够,但肯定会有所帮助。我们不仅想制作教程让您每次都能学到新东西,还想展示“如何在同一框架下提高工作效率”。在下面的评论中向我们提供您的宝贵反馈。保持联系。继续评论。