是否有可能在 Linux 系统上隐藏 Bash 中恶意别名的存在,并在用户不知情的情况下执行它?
我编写了一个脚本来在 Nginx 上创建新的虚拟主机。该脚本创建 Ningx vhost 配置文件、vhost 用户和目录、php-fpm 池文件。
在脚本的末尾,我想在重新启动 php-fpm 之前检查配置是否正常。对于 Apache,我可以apachectl graceful,但是可以用 做类似的事情php5-fpm -t吗?
我从很多地方看到 follow 命令用于检查进程是否存在,例如
killall -0 nginx
Run Code Online (Sandbox Code Playgroud)
但是从文档中我看不到与此论点相关的任何内容,谁能解释一下?
我想看一个文件每 5 分钟被覆盖一次less。我怎样才能less跟随新的文件描述符而不是保持旧的显示?watch "cat file"不会这样做,因为文件太长而无法放入一个终端窗口。
我的系统在 nano 会话中因未保存的更改而崩溃。
当我通过 SSH 重新登录时,当我执行ps.
davidparks21@devdb1:/opt/frugg_batch$ ps -ef | grep nano
1001 31714 29481 0 18:32 pts/0 00:00:00 nano frugg_batch_processing
1001 31905 31759 0 19:16 pts/1 00:00:00 grep --color=auto nano
davidparks21@devdb1:/opt/frugg_batch$
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在新终端中控制纳米进程?
或者有什么方法可以强制它远程保存(从我的新终端)?
我有一个脚本可以下载和替换 Debian 压缩中的内核头文件。
function fixHeaders(){
#Replace the kernel headers from OVH with standard kernel headers...
aptitude -y install linux-image-2.6.32-5-amd64
sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g
update-grub
echo "Rebooting the machine. Run this script again after reboot and choose option 2."
sleep 1
reboot
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,在 aptitude 下载软件包后,它会将脚本放入文本 gui 并询问用户一堆问题。有什么办法可以跳过这个或在适当的时间发送选项卡/输入来为所有答案选择“确定”?
我无法在 Debian 6.0 (Squeeze) 服务器上更新Bash以消除发现的漏洞:
bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
apt-get update
apt-get install bash
Reading package lists... Done
Building dependency tree
Reading state information... Done
bash is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Run Code Online (Sandbox Code Playgroud)
我可以为此服务器使用 Squeeze-LTS 来更新 Bash 吗?一周后我将在另一台服务器上,所以我不会进行任何其他更新。
uname -m
x86_64
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.5 (squeeze)
Release: 6.0.5
Codename: squeeze
Run Code Online (Sandbox Code Playgroud) 我需要使用 openssl 在 shell 脚本中执行一些 HTTP GET 请求。我现在用来执行此操作的行如下所示。这是解析以下格式的 XML 响应的内容。
<Result>success</Result>
<Result>failure</Result>
echo -e "GET /test HTTP/1.1\r\nHost:$(hostname)\r\n\r\n" | openssl 2>&1 s_client -quiet -connect server-url:443 | grep -o -P --color '(?<=Result\>).*(?=\</Result)'
Run Code Online (Sandbox Code Playgroud)
这有效并相应地返回字符串“成功”或“失败”。我面临的问题是该openssl命令在执行 GET 请求后不会终止,而是坐在那里等待更多输入。我相信这是由于隐式的-ign_eof,它阻止了由-quiet选项引起的自动终止。我已经尝试使用该-no_ign_eof选项,但这会导致openssl命令在 GET 请求收到响应之前终止,因此如果我使用它,我将无法获取响应的内容。
如何修改此命令,以便我可以通过 stdin 传递 GET 请求(因为我想将其放入循环中是必需的),但openssl在每次请求后都会终止该命令?
如果我运行作业,sudo我不能运行kill %1它们(不允许操作)。我的第一个想法是sudo kill %1改用,但这当然也不起作用,因为它不会使用 bash builtin kill。有什么技巧可以使这项工作?
// 我知道如何通过它的 PID 杀死一个进程。问题具体是关于如何使用作业 ID 来终止 sudo 作业。