我有一个超级用户 ssh 访问配置错误的第三方 ubuntu 14.10 框:某些进程在目录中创建了许多临时文件(并且不清除它们,慢慢耗尽 inode 限制)。有什么简单的方法可以找出创建文件的过程到底是什么?我假设只有一个进程将文件添加到该目录,并且最初 dir 是空的(我可以清除它)。当然,我可以推测它是一些执行 PHP 代码的 nginx 进程或一些 Python 守护程序 - 但肯定会为我节省很多时间。
grigoryvp's questions
我在 Virtualbox 中安装了来自官方网站的最新干净的 Ubuntu 14.04.1 64 位。我使用 vpnc 连接到 VPN 网络,该网络使用 DHCP 设置 2 个 DNS 服务器:
user@virtual:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.88.94.1
nameserver 8.8.8.8
nameserver 10.40.0.1
其中10.88.94.1
和8.8.8.8
由vpn dhcp10.40.0.1
返回,由lan dhcp返回。vpn dhcp 返回的第一个 DNS 服务器被配置为一些内部名称的权威、非递归名称服务器。
问题是 - Ubuntu 以某种方式忽略了权威标志并丢弃了有效响应,因为它是非递归的:
user@virtual:~$ nslookup
> video.something.com
;; Got recursion not available from 10.88.94.1, trying next server
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: video.something.com
Address: 180.112.94.1
由于 tcpdump 清楚地显示来自第一个 DNS 服务器的答案设置了“权威”标志,但不知何故它被忽略了(第二个响应中的“*”代表“权威”,“-”代表“非递归”):
13:23:44.505098 IP 10.40.130.209.44159 > 10.88.94.1.domain: 63790+ A? video.something.com. (32)
13:23:44.506285 IP 10.88.94.1.domain > 10.40.130.209.44159: 63790*- 1/0/0 A 10.88.94.12 (48)
13:23:44.506390 IP 10.40.130.209.45437 > 8.8.8.8.domain: 63790+ A? video.something.com. (32)
13:23:44.608414 IP 8.8.8.8.domain > 10.40.130.209.45437: 63790 1/0/0 A 180.112.94.1 (48)
在 Windows 和 OSX 上,相同的设置按预期工作(使用第一个 DNS 结果)。但不是在 Ubuntu 上。这是我可以在 Ubuntu 中修复的东西,以便无论“非递归”标志如何都能正确处理权威响应,或者它完全被破坏了,我无能为力吗?
我让 nginx 在简单的 ubuntu VPS 上运行,它就像一个简单的 HTTP 代理:
server {
listen 8080;
location / {
resolver 8.8.8.8;
proxy_pass http://$http_host$uri$is_args$args;
}
}
一切正常,但任何人都可以连接到这个代理 :(。我有什么简单的方法可以向它添加一些登录名/密码吗?HTTP basic/digest/whatever will do。
我有一个 python 我们的应用程序,www-data
出于安全目的(不是在root
)下执行。其中一个进程可以生成特定于应用程序的日志文件,我想将此文件放在某个地方。正如我所注意到的,/var/log
拥有root
所有者和drwxr-xr-x
权利,因此我的非root
应用程序无法在此处写入日志。在这种情况下,写入日志的正确位置是什么?我是否需要www-data
用日志(如~/.myapp.log
)清除主文件夹或者它是一些可用的惯用解决方案?
如果我在 shell 中执行“ps”命令,我可以获得一些标记为“”的进程 - 它们已退出,但父进程尚未收到它们的退出状态。有时,在调试网络应用程序时,我需要从 shell 获取此类进程的退出状态——它是 0 还是一些错误代码,如分段错误?
是否有可能从给定的 shell 中获取此退出状态PID
,或者只有僵尸的父进程才能获取此退出状态?
PS 我不需要“杀死”它们,“关闭”它们等等。我只需要检查它们的退出状态:)
可能重复:
您使用什么工具来监控您的服务器?
我有一个简单的 ubuntu 12.04 服务器,它运行 nginx、gunicorn 和一些 python WSGI 网站。每天早上我都想查看过去 24 小时服务器的 CPU 和内存使用情况,以便检测异常/问题。此外,如果我在 reddit 上发布有关此服务器上某些站点的信息,我想检查当前的 cpu/内存使用情况图。
哪些工具和应用程序用于此类任务?我确信这是一项非常受欢迎的任务,每个服务器所有者都以某种方式解决了它。
我有一个带有真实 IP 的测试 VDS 盒。如果我在物理接口端口 80 上启动 Web 服务器,它可以通过它的 IP 地址(和默认端口 80)从另一台计算机打开:
python -m SimpleHTTPServer 80
但是,如果我尝试将端口 80 从物理接口重新编辑eth0
到环回 127.0.0.1 端口 8080,我可以从另一台计算机的端口 8080 连接它,但无法连接端口 80,它只是无休止的“连接”。似乎没有发生重定向:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
python -m SimpleHTTPServer 8080
我做错了什么?:(
“127.0.0.1:8080”上的 PS 绑定服务器产生相同的结果,但这并不重要,因为在“0.0.0.0:8080”上运行的服务器将接受重定向到“127.0.0.1:8080”的连接。AFAIK。:(
iptables -L
结果:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables -t nat -L
结果:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:http to:127.0.0.1:8080
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
netstat -nlp
结果:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 676/sshd
tcp6 0 0 :::22 :::* LISTEN 676/sshd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 7964 600/acpid /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 6590 1/init @/com/ubuntu/upstart
unix 2 [ ACC ] SEQPACKET LISTENING 6760 231/udevd /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 7030 345/dbus-daemon /var/run/dbus/system_bus_socket
ifconfig -a
结果:
eth0 Link encap:Ethernet HWaddr 00:16:3e:da:1a:98
inet addr:5.14.223.181 Bcast:5.14.223.255 Mask:255.255.255.0
inet6 addr: fe80::140:3eff:febe:201a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:371264 errors:0 dropped:59 overruns:0 frame:0
TX packets:2093 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17377545 (17.3 MB) TX bytes:214428 (214.4 KB)
Interrupt:25
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:552 (552.0 B) TX bytes:552 (552.0 B)
我有一个sshd
配置好的 Ubuntu Server 9.10 盒子。我有两台安装了 Windows 7 Professional 和 putty 的电脑。一天前,两台计算机都能够通过 putty 和 plink 连接 ubuntu 服务器。我已经安装sun-java6-jre
在 ubuntu 服务器上,现在有一个奇怪的问题。第一台 Windows 7 计算机仍然可以连接 putty GUI 和 command-line plink
。第二台计算机可以通过 putty gui 连接,但如果我发出plink
在第一台计算机上完美运行的命令:
plink www.hostname.tk -i c:\users\username\documents\key\private.ppk
我得到login
提示,输入与第一台计算机上相同的用户名,并收到以下奇怪的错误消息:
bash: www.hostname.tk: command not found
我看不出我的 Windows 7 计算机之间有任何区别:(。使用的ppk
密钥是相同的(我以两种方式复制了多次)。hostname
并且username
是相同的。任何人都知道为什么会发生这种情况,我该怎么做才能做到排除故障并修复它?
更新:
显示的日志plink -v
:
Offered public key
Offer of public key accepted
Authenticating with public key "imported-openssh-key"
Access granted
Opened channel for session
Started a shell/command
bash: www.hostname.tk: command not found
Server sent command exit status 127
Disconnected: All channels closed
是否可以在 Ubuntu Server 上安装和使用 Ubuntu One 进行备份?上的说明one.ubuntu.com
仅显示如何在带有 Gnome 的 Ubuntu 桌面上使用它:(。
也许一些开发人员的博客/论坛帖子揭示了 ubuntu 一项服务和 ubuntu 服务器操作系统共存的当前计划?
我有一个 Exchange Server 2003 Enterprise Service Pack 2,它将传入的电子邮件放入 Exchange 电子邮件帐户中供员工使用。是否可以对其进行配置,以便它将传入的电子邮件发送到 [email protected] 之类的地址,放在回答支持问题的员工的随机邮箱中?例如,如果 3 名员工有诸如 [email protected]、tim@[email protected] 和 [email protected] 之类的电子邮件,它会将传入的电子邮件 [email protected] 随机放入这 3 个邮箱之一?
是否可以配置 microsoft DNS 服务器(widows server 2008+)以使用 Microsoft SQL 作为 DNS 数据的数据源?有没有可用的指南?
最近我的任务是使用 Microsoft SQL 数据源在 Windows 上配置 PowerDNS,以便它将 LAN 名称如“a1”解析为 192.168.0.10,“a2”解析为 192.168.0.11 等。很多记录。但我没有 DNS 服务器配置的经验,而且 PowerDNS 手册中没有“noice”信息。基本上,所有手动状态都是“将 DNS 数据放入 SQL 表”。而“DNS 数据”是具有“domain_id”、“type”等列和“A”、“AAA”、“SOA”等字段的神秘记录。我试图将一些简单的数据输入数据库,并且在 powerDNS 中获得了例外:)。看来我必须根据一些规则输入正确的数据。
问题是:我在哪里可以阅读有关 LAN 的 PowerDNS 配置的介绍性信息?
是否可以从现有文件夹中的文件创建 VHD 虚拟驱动器映像?我知道它可以通过 .NET 框架 API 以编程方式完成,但也许它已经存在一个可以像这样运行的工具
create my.vhd c:\my
我正在测试 NAT 渗透代码,需要一个对称 NAT。我已经用 PF 配置了 FreeBSD,非常简单的规则:
# rl0 in WAN on DHCP, sk0 is LAN with computers behind this NAT.
nat on rl0 from sk0:network to any -> (rl0)
这很好用,NAT 对 UDP 数据包是对称的,但不幸的是,对于到不同目的地的每个数据包,传出端口号是随机的。它是一种配置 PF 的方法,所以端口不是随机的,而是一种增量的?例如,发往主机 A 的 UDP 数据包将获得传出 UDP 端口号 50000,发往主机 B 的 UDP 数据包将获得端口号 50001,发往主机 C 的 UDP 数据包为 50002 等等?
作为开发人员,我经常需要执行复杂的文件搜索。例如,在 ac:\sdk 和 c:\project\include 中搜索以“buf”开头并以“.c”或“.h”结尾的文件。vista+ 中的 Windows 搜索很好,但是对于大量来源,如果没有索引,它会搜索很长时间,并且无法指定要搜索的文件夹数量。
是否有任何好的免费软件工具可以在 Windows 平台上执行复杂的文件搜索?Google 桌面也需要索引,并且正则表达式支持非常有限。
我有一个全新安装的 FreeBSD 7.2-RELEASE。我想为几台 Windows 计算机安装一个简单的 DHCP 服务器。但是,不幸的是,以下不起作用:
pkg_add -r isc-dhcp3-server
错误是:“错误:FTP 无法获取ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2-release/latest/isc-dhcp-server.tbz ”
我做错了什么?pkg_add -r nano 工作得很好:(。DHCP 服务器包有不同的名称吗?或者它必须从另一个地方获取?或者在 7.2 中没有使用 isc-dhcp3 并且它是运行简单 DHCP 服务器的其他方式?
我知道可以从端口构建它(理论上),但我对如何将它作为一个包从互联网安装非常感兴趣。有什么提示吗?
目前我正在研究一些 NAT 遍历代码(它允许每个位于它自己的 NAT 后面的计算机相互通信)。但是,令人惊讶的是,我找不到任何对称的 NAT!(这是最难的情况)。任何人都知道我在哪里可以找到一个,软件或硬件枯萎?似乎 Windows 的“互联网连接共享”不是对称的 :(。
我有一堆 python 脚本。其中一个安装需要将其路径添加到 $PATH 的软件(颠覆)。安装后,我希望下一个脚本使用该软件。如果我export PATH=/opt/subversion/bin:$PATH
在第一个和第二个脚本之间运行 bash,一切都很好。但是,如果我添加os.system( 'export PATH=/opt/subversion/bin:$PATH' )
为第一个脚本(安装颠覆)的最后一个命令,$PATH
它退出后保持不变。
是否可以从 python 脚本中更改 $PATH 以便在脚本完成后保持更改(当然,在单个 bash 会话中,我知道/etc/profile
)。
出现了一项任务,为一组 mac os x 用户(最新的 mac os 版本)安装最新的 subversion。我首先尝试从 subversion.tigris.org 手动安装它,“opencollabnet 二进制”(http://downloads.open.collab.net/binaries.html,“用于 MAC OS X 的通用 Subversion 1.6.3 二进制文件(32 和64 位)”)。它通过 .pkg 安装程序安装得很好,但是在使用 'svn' 命令后,我惊讶地看到一个旧的 1.4.4 版本与 macos 捆绑在一起。
看来,安装新的颠覆并不能取代旧的。确保“svn”命令始终使用新安装的颠覆的“正确”方法是什么?我可以创建一个符号链接或将 /opt/bla-bla-bla/subversion 添加到路径,但我担心这种粗暴的黑客行为会破坏某些东西。
在 *nix 中,vim 语法文件在 ~/.vim/syntax/[language].vim 但是在 windows dot 不是一个受欢迎的文件夹名称开始,所以它假设是 _vim\syntax\[language].vim 我试过将语言文件放在这样的文件夹中,但是 :set syntax=[language] 在 windows vista 上没有任何作用 :(。令人惊讶的是,_vimrc 工作正常。有什么提示吗?