我注意到它|用于将第一个命令的结果发送给另一个。我想杀死所有与名称匹配的进程。
这是 pgrep 通常所做的:
$ pgrep name
5089
5105
Run Code Online (Sandbox Code Playgroud)
并且多个参数似乎适用于kill:
sudo kill 5089 5105
Run Code Online (Sandbox Code Playgroud)
但这是错误的:
pgrep name | kill
Run Code Online (Sandbox Code Playgroud)
那么如何正确操作呢?
我处于令人沮丧的情况 - 无论我如何尝试,gparted 都不会让我将空白空间分配给第一个分区:

中间分区阻止我扩展/dev/sda1。我需要将分区移动/dev/sda2到驱动器的末尾,就像这样(制作的图像):

然后我将能够扩展第一个分区:

怎么做?我假设/dev/sda2必须将数据从物理上复制到驱动器的末尾。
我的二进制文件依赖于这些 boost 库和相应的包:
NAME | PACKAGE:
--------------------------------------+-----------------------------------
libboost_serialization.so.1.55.0 | libboost-serialization1.55.0
libboost_thread.so.1.55.0 | ibboost-thread1.55.0
libboost_date_time.so.1.55.0 | libboost-date-time1.55.0
libboost_signals.so.1.55.0 | libboost-signals1.55.0
Run Code Online (Sandbox Code Playgroud)
所以我想定义一个包列表:
boostlibnames="libboost-serialization1.55.0 libboost-thread1.55.0 libboost-date-time1.55.0 libboost-signals1.55.0"
Run Code Online (Sandbox Code Playgroud)
现在我想检查它们是否都已安装,然后才运行实际的apt-get install. 我知道 apt 会自动检查软件包是否已经安装,但我想在安装之前提示用户是否要安装缺少的库。
那么有没有一种很好的方法来检查是否安装了所有列出的库(在上面的变量中)?
让我惊讶的是,没有任何搜索让我想到这样一个简单的问题。我想要的只是获取用户和用户组的列表(无论第二件事实际上是什么)。
我发现了许多有关创建或删除用户帐户的资源,但听起来每个人都牢记系统上的所有帐户。我想不是那样的。
那么我如何列出他们,他们的权限以及如何列出组?
我正在尝试在 tomcat webapp 中安装一些东西。这是我的install目标的开始:
tomcat=`locate --regex "^(/var/lib/tomcat[0-9]{1,2}/webapps/[^/]+/)AppName\.html$" -l 1 | tr -d "\n"`
echo "Tomcat: $tomcat"
# If the string is empty (no path matched) or the path does not exists (that should never really happen)
# terminate
if [ -z "$tomcat" ] || [ ! -f "$tomcat" ]; then
echo "Application not found on filesystem."
exit 404
fi
Run Code Online (Sandbox Code Playgroud)
然而,这是输出:
tomcat=`locate --regex "^(/var/lib/tomcat[0-9]{1,2}/webapps/[^/]+/)AppName\.html -l 1 | tr -d "\n"`
/bin/sh: 1: Syntax error: Unterminated quoted string
makefile:77: recipe …Run Code Online (Sandbox Code Playgroud) 我在树莓派上运行Hydra。该程序存在一些问题,但除此之外,程序中存在隐藏的内存泄漏。源码挺大的,实在找不到问题所在。不幸的是,在达到内存限制时,程序不会崩溃——而是返回一堆错误消息。当我说一堆时,我的意思是数百。
所以我想如果我不能在程序中取消分配内存,我可能需要重置整个过程。所以我需要:
我必须这样做,直到修复程序因错误而死亡 - 或者首先不生成它们。
如果您了解 hydra 并且对我在代码中发现的错误感到好奇:
[错误] fork for children 失败:无法分配内存 [错误] socketpair 创建失败:打开的文件太多
错误的第二部分来自perrorC 系统函数。这是最后一个错误。
我正在尝试以正确的(意味着可重现的)方式编译多架构项目,所以我决定通过apt-get. 但是自从系统注意到我在做什么之后,它就变得充满敌意。虽然很多人声称您可以通过以下命令安装 32 位 OpenSSL:
apt-get install libssl-dev:i386
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个结果:
E: Unable to locate package libssl-dev
Run Code Online (Sandbox Code Playgroud)
我做了apt-get update,我的操作系统版本是Debian GNU/Linux 8( Jessie )。难道我做错了什么?
我试图检查哪些i386库实际上可用:
XXXXX@debianvirtualbox:~$ aptitude search i386
p debian-installer-8-netboot-i386 - Debian-installer network boot images for i386
v debian-installer-netboot-i386 -
p installation-guide-i386 - Debian installation guide for i386
p installation-guide-kfreebsd-i386 - Debian installation guide for kFreeBSD i386
i libc6-dev-i386 - GNU C Library: 32-bit development libraries for AMD64
i A libc6-i386 - GNU C …Run Code Online (Sandbox Code Playgroud) Linux 的设计方式,一旦你失去互联网连接,你就完蛋了。因为没有互联网,你不能安装程序,你可能只需要一些程序来设置互联网。
带有 xfce 的 Debian 没有内置的 gui 来确保这个问题更加危险。我不确定我到底做错了什么,但是我的虚拟机中的 Debian 在克隆虚拟网卡后停止与虚拟网卡通信,我认为这与 mac 地址更改有关。我尝试在更改虚拟盒卡设置时重新启动它,但没有任何反应。
Windows 的替代品ipconfig似乎是ip,我得到了这个ip a:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 范围主机 lo
valid_lft 永远首选_lft 永远
inet6 ::1/128 范围主机
valid_lft 永远首选_lft 永远
2: eth0 : <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
链接/以太 08:00:27:98:5a:42 brd ff:ff:ff:ff:ff:ff
好像界面被关闭了。这本身就很奇怪,硬件连接在virtualbox端。mac 地址与 virtualbox 设置匹配,因此必须从硬件加载地址。
有没有办法像我在 Windows 中那样配置网络连接?比如看硬件是否找到,是否与dhcp通信等等?
对于包含 30 多个文件的档案,提取的文件列表很快就不再有趣了。我正在制作一个将.war存档提取到 tomcat 应用程序文件夹中的脚本:

在查看7z命令帮助时,我注意到这一行:
-bd:禁用百分比指示器
好吧,我真的很想启用百分比指示器并使用它而不是疯狂的文件列表。我该怎么做?就像是:

但坦率地说,像波纹管这样的一行百分比指标就足够了:
Progress: 30%
Run Code Online (Sandbox Code Playgroud) 如果是没有互联网连接的 Windows 机器,我会做的是在另一台计算机上下载安装程序/程序,将它们放在便携式媒体上,将它们复制到无连接的机器上并安装它们。不幸的是,Linux 并没有那么简单地工作——尽管我希望你能在这一点上证明我是错的。
在 linux (debian) 上,我从来没有喜欢通过以下方式安装任何东西:
sudo apt-get install package_name(s)
Run Code Online (Sandbox Code Playgroud)
没有连接到互联网的事情是不可能的。不幸的是,要下载哪些文件以及从何处下载也很不清楚。通常 apt 会下载数十个文件,这是我讨厌手动执行的操作。
那么,是否有一个程序可以在我的 Windows PC 上下载文件,而无需做任何事情,只需告诉它包名?
我正在寻找如何在 Debian 上正确安装 java。来到 Debian wiki(这是我在 Debian 上真正欣赏的一件事,这个 wiki 很棒),这是我在那里得到的提示:
只需在您的系统上运行
aptitude search "?provides(java-runtime)"即可列出可用的软件包)。
所以我认为这?provides是描述中的一些查询,但是看哪:
i A default-jre - Standard Java or Java compatible Runtime
p default-jre:i386 - Standard Java or Java compatible Runtime
i A default-jre-headless - Standard Java or Java compatible Runtime (headless)
p default-jre-headless:i386 - Standard Java or Java compatible Runtime (headless)
p gcj-4.8-jre - Java runtime environment using GIJ/Classpath
p gcj-4.8-jre:i386 - Java runtime environment using GIJ/Classpath
p gcj-4.8-jre-headless - Java runtime environment …Run Code Online (Sandbox Code Playgroud) 我什至不确定是否grep打算用于单行数据中的正则表达式。谷歌搜索让我找到了这个前瞻表达式,它与 一起grep匹配任何.ext文件并返回裸名称:
XX@XX:/$ echo name.ext | grep -oP [^\.]+(?=.ext)
name
Run Code Online (Sandbox Code Playgroud)
这很好,但现在我提示用户保存文件,我不确定他是否会输入带有扩展名的名称。我尝试使前瞻有条件,确保所有名称都匹配,但这会返回一些我不明白的东西:
XX@XX:/$ echo name.ext | grep -oP "[^\.]+(?=.ext)?"
name
ext
Run Code Online (Sandbox Code Playgroud)
如果我省略扩展名,它会起作用:
XX@XX:/$ echo name | grep -oP "[^\.]+(?=.ext)?"
name
Run Code Online (Sandbox Code Playgroud)
那么这是一个grep问题还是regex问题?也许我需要以某种方式使前瞻非捕获?