小编Mar*_*lli的帖子

如何从文件中导出变量?

我有一个tmp.txt包含要导出的变量的文件,例如:

a=123
b="hello world"
c="one more variable"
Run Code Online (Sandbox Code Playgroud)

如何使用export命令导出所有这些变量,以便子进程以后可以使用它们?

bash

138
推荐指数
4
解决办法
14万
查看次数

如何安装 Python 3.6?

我想安装最新的 Python,在撰写本文时为 3.6。但是,存储库说 Python 3.4.2 是最新版本。

我试过了:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2
Run Code Online (Sandbox Code Playgroud)

为了在我的 Windows 工作站上升级到 Python 3.6,我只需下载一个 exe,单击“下一步”几次,就完成了。在 Debian Jessie 上安装 Python 3.6 的正确且官方接受的程序是什么?

debian python software-installation

125
推荐指数
5
解决办法
27万
查看次数

谁在启动我的 ssh-agent,为什么它不能正常终止?

这是我长期以来一直遇到的一个问题,但每次我试图弄清楚一些事情时,我都会迷失方向,所以我想我最好在这里问一下,也许更有经验的人可以帮助我。

背景

我的 Raspberry Pi 正在运行 Raspbian Jessie,我经常使用 SSH 登录它并远程执行命令。在我的第一个 SSH 会话中,我注意到每次登录时都会在 RPi 上ssh-agent生成一个进程,但在ing时从未被杀死:多次登录和注销导致生成一堆进程,只是挂在那里什么也不做。四处闲逛,到处阅读手册页和答案,我最近了解了. 此外,我注意到发出会导致产生另一个实例。我在相关的手册页上阅读exitssh-agentssh-agentsource ~/.bashrcssh-agentSSH_AGENT_PID应该定义环境变量,因为ssh-agent程序应该在 an 中启动eval以执行其输出并定义此类变量,然后其他与 SSH 相关的命令使用这些变量,包括ssh-agent -k(杀死相对于当前会话的代理),所以我跑echo $SSH_AGENT_PIDecho $SSH_AUTH_SOCK,但它们都是空的。我突然意识到:可能该进程不会在注销时被杀死,因为它ssh-agent -k试图从未设置的环境变量中读取其 PID。

问题

由于ssh-agent没有在注销时被杀死,并且这肯定会发生,因为所需的环境变量没有设置,它只能意味着一件事:调用ssh-agentlogin 的人可能没有以正确的方式(这将是eval "$(ssh-agent -s)"。所以我想:嗯,有什么问题吗?我会找到执行哪个配置文件、服务或登录脚本来启动代理并手动修复它!它到底在哪里?

我试过的

由于我注意到ssh-agent每次调用时都会生成an source ~/.bashrc,这是我检查的第一个文件,但那里甚至没有远程引用与 SSH 相关的任何内容。我一直在使用以下所有文件中vi的字符串搜索ssh,但一无所获

~/.bashrc
~/.profile …
Run Code Online (Sandbox Code Playgroud)

login ssh openssh ssh-agent raspbian

11
推荐指数
1
解决办法
2459
查看次数

检测特定软件包是否安装在 apt-get 钩子中的更干净的方法?

我有一个简单的脚本,可以将补丁应用于给定的包,并且由于每次升级所述包时补丁都会被覆盖,我真的很想在每次升级后自动应用补丁。

为此,我创建了一个文件/etc/apt/apt.conf.d/并为DPkg::Post-Invoke. 正如所记录的那样man apt-getapt-get在使用dpkg. 然而,这个钩子似乎没有关于安装了哪个特定包的任何信息,所以我不知道是否必须应用补丁。没有任何东西传递给它的标准输入,没有任何东西作为参数传递,并且手册页没有提及它。

所以为了解决这个问题,我做了我唯一能想到的事情:我添加了另一个钩子 for DPkg::Pre-Install-Pkgs,它在安装包apt-get 之前运行。这个钩子(通过标准输入)获取.deb将要安装的文件列表dpkg,所以我只检查是否有任何文件名与我想要修补的包的名称匹配,如果是,我在/tmp. 当我的另一个钩子被执行时,它首先检查所述文件是否存在,如果存在,则将补丁应用于刚刚安装的包。

这是我创建的文件/etc/apt/apt.conf.d/

DPkg::Pre-Install-Pkgs {
    "while read -r pkg; do case $pkg in *somepkg*) touch /tmp/.patch && exit 0; esac done < /dev/stdin";
};

DPkg::Post-Invoke {
    "[ -f /tmp/.patch ] && /home/marco/scripts/apply_somepkg_patch.sh && rm -f /tmp/.patch; exit 0";
};
Run Code Online (Sandbox Code Playgroud)

要清楚apply_somepkg_patch.sh简单地编辑包提供的文件的内容。我希望每次都升级和修补所述文件,我不想“锁定”它所以它不会升级。

现在,虽然这一切都很好,但它看起来很脏,对我来说有点不对。有没有更清洁的方法来实现这一点?也许只使用DPkg::Post-Invoke …

dpkg apt

5
推荐指数
1
解决办法
420
查看次数

如何查看栈、数据、堆、代码等内存段的起始地址和结束地址?

由于内存段是 Linux 操作系统的一部分,是否可以使用简单的 C 程序或任何 Linux 命令来查看它们各自的地址。

linux memory

2
推荐指数
1
解决办法
7842
查看次数

标签 统计

apt ×1

bash ×1

debian ×1

dpkg ×1

linux ×1

login ×1

memory ×1

openssh ×1

python ×1

raspbian ×1

software-installation ×1

ssh ×1

ssh-agent ×1