假设您拥有人类可读格式的数量数据,例如 的输出du -h,并且想要进一步对这些数字进行操作。假设您想通过 grep 传输数据以对该数据的子集进行求和。您可以在许多以前从未见过的系统上临时执行此操作,并且只有最少的实用程序。您需要对所有标准 10^n 后缀进行后缀转换。
是否存在一个 gnu-linux 实用程序来将后缀数转换为管道内的实数?您是否编写了一个 bash 函数来执行此操作,或者一些可能容易记住的 perl,而不是一段正则表达式替换或几个 sed 步骤?
38M /var/crazyface/courses/200909-90147
2.7M /var/crazyface/courses/200909-90157
1.1M /var/crazyface/courses/200909-90159
385M /var/crazyface/courses/200909-90161
1.3M /var/crazyface/courses/200909-90169
376M /var/crazyface/courses/200907-90171
8.0K /var/crazyface/courses/200907-90173
668K /var/crazyface/courses/200907-90175
564M /var/crazyface/courses/200907-90178
4.0K /var/crazyface/courses/200907-90179
Run Code Online (Sandbox Code Playgroud)
| grep 200907 | <amazing suffix conversion> | awk '{s+=$1} END {print s}'
相关参考资料:
我需要在 Scientific Linux (RHEL) 安装脚本中自动安装 CPAN 和一些 Perl 模块。不幸的是,就我所见,我想要的特定模块(至少其中一个)无法作为 RPM:s 找到。
所以我需要安装 CPAN,自动配置它(或使用配置文件),然后自动安装所需的模块(包括依赖项)。
这似乎不是一个非常不寻常的要求,但我还没有看到任何关于此的非常好的文档。问题是,每当第一次启动 CPAN 时,都会运行交互式配置。这可以以某种方式跳过吗?以及如何直接从命令行启动模块安装?
我使用 perl 脚本(带有 Semaphore 包)向 AWS 实例发出长时间运行的 ssh 命令。出于多种原因,我不会在后台运行 ssh 命令。
最近,我们办公楼的康卡斯特光纤被施工人员切断。我们维护了一个备份 CenturyLink 连接,我们的 IT 人员将我们的办公室连接切换到 CenturyLink。
当我们从 Comcast 切换到 CenturyLink 时,我的 ssh 进程因“超时,服务器无响应”消息而终止。当我们在光纤修复后切换回康卡斯特时,他们再次死亡。
如果本地公共 IP 地址发生变化,这是打开 ssh 命令的预期行为吗?如果我把 ssh 命令放在后台,它会解决这个问题吗?
我正在尝试为 Munin 激活一些 Postgresql 插件。当我运行时,munin-node-configure --suggest | grep postgres我得到以下输出:
postgres_bgwriter | no | no [DBD::Pg not found, and cannot do psql yet]
postgres_cache_ | no | no [DBD::Pg not found, and cannot do psql yet]
postgres_checkpoints | no | no [DBD::Pg not found, and cannot do psql yet]
postgres_connections_ | no | no [DBD::Pg not found, and cannot do psql yet]
postgres_connections_db | no | no [DBD::Pg not found, and cannot do psql yet]
postgres_locks_ | no | …Run Code Online (Sandbox Code Playgroud) 我有一个构建脚本 (Perl),可以.htaccess在部署应用程序时修改文件。作为双重检查,我希望能够对创建的.htaccess文件执行某种语法检查。
我熟悉使用的想法,apachectl -t但是,我在共享主机环境中,由于文件访问限制,我无法读取系统管理员指定的某些配置文件。Apachectl在这方面根本行不通。
欢迎提出想法或建议。
所以,我们在办公室托管了一个地理服务网络服务器。
显然有人闯入了这个盒子(可能是通过 ftp 或 ssh),并放入了某种 irc 管理的 rootkit 东西。
现在我正在尝试清理整个事情,我找到了试图通过 irc 连接的进程 pid,但我无法弄清楚谁是调用进程(已经用 ps、pstree、lsof 看过)该进程是一个 perl www 用户拥有的脚本,但 ps aux |grep 在最后一列显示假文件路径。
是否有另一种方法来跟踪该 pid 并捕获调用者?
忘了说:内核是2.6.23,可以利用成为root,但是我不能太接触这台机器,所以我不能升级内核
编辑:lsof 可能有帮助:
lsof -p 9481
命令 PID 用户 FD 类型设备大小节点名称 ss
perl 9481 www cwd DIR 8,2 608 2 /ss
perl 9481 www rtd DIR 8,2 608 2 /ss
perl 9481 www, txt 2838usr /s斌/ perl5.8.8ss
perl的WWW 9481 REG MEM 8,2 135348 23286 /lib64/ld-2.5.soss
perl的WWW 9481 REG MEM 8,2 103711 23295 /lib64/libnsl-2.5.soss
perl的WWW 9481 …
我需要获取目录中非零大小的文件名称列表。这应该在 shell 脚本中,所以 bash(或 Perl one-liner)将是理想的。
所以,我是 CGI/Perl 的新手,我正在尝试将基于 perl 的 Web 应用程序移动到新服务器。
我的新服务器是 CentOS 7,它运行 Apache HTTPD 2.4.6。
我正在尝试通过 HTTP 请求获得基本的 Perl CGI。
Web 请求返回“500 内部服务器错误”
错误日志显示“权限被拒绝”:
[Tue May 12 16:56:44.604660 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] AH01215: (13)Permission denied: exec of '/var/www/html/cgi-test/first.pl' failed
[Tue May 12 16:56:44.604708 2015] [cgi:error] [pid 12302] [client 10.0.2.2:56693] End of script output before headers: first.pl
Run Code Online (Sandbox Code Playgroud)
我的 CGI 脚本在 /var/www/html/cgi-test/first.pl
它看起来像这样:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World.";
Run Code Online (Sandbox Code Playgroud)
在 cgi-test 目录中,权限如下所示:
drwxr-xr-x. 2 root root 21 May 12 16:48 . …Run Code Online (Sandbox Code Playgroud) 我将 FreeTDS 驱动程序与 DBD::Sybase 一起使用,连接到 MS SQL Server。当我查询某些记录的某些值时,出现此错误:
DBD::Sybase::st fetchrow_arrayref failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
Server , database
Message String: WARNING! Some character(s) could not be converted into client's character set. Unconverted bytes were changed to question marks ('?').
Run Code Online (Sandbox Code Playgroud)
这似乎发生在包含特殊 Windows 字符集字符的记录中,例如从人们的 Outlook 和 Word 消息中复制和粘贴的卷曲引号。
不幸的是,我对这个数据库没有任何控制权;清理输入的方式显然是要走的路,但对我来说不可用。
我需要更改哪些 FreeTDS 设置才能成功查询这些记录?
附加信息:
查询在 tsql 中运行良好。我只通过 Perl 的 DBD::Sybase 接口得到这个错误。(我应该通过其他方式进行测试吗?我还没有安装 PHP 或 Python 的专业知识。我有 jTDS 并且可以使用它,但我认为这是一个完全不同的实现,而不是 FreeTDS 的接口。)
添加
client charset = …Run Code Online (Sandbox Code Playgroud) 我使用以下命令安装了 perl:
curl -L http://xrl.us/installperlnix | bash
Run Code Online (Sandbox Code Playgroud)
之后我运行以下命令来创建软链接
ln -sf /usr/local/bin/perl /usr/bin/perl
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试运行诸如dir, mkdir, ll, 之类的命令rm,vi但似乎没有任何效果。同样,当我尝试登录我的 shell 时,我在启动时收到以下消息:
Last login: Wed Apr 4 21:50:12 2012 from x.y.z.ip
-bash: perl: command not found
Run Code Online (Sandbox Code Playgroud)
请帮忙。
这是系统详细信息:
cat /proc/version
Linux version 2.6.18-274.18.1.el5.028stab098.1 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Sat Feb 11 15:30:41 MSK 2012
cat /etc/issue
CentOS 5.7 32 bit
Kernel \r on an \m
Run Code Online (Sandbox Code Playgroud)
不知道 perl 是否已经安装。现在我无法检查。