我可以在我的机架服务器共享主机的SSH控制台上运行这个命令: cd /home/myaccount/public_html/whatever; perl -w -I/home/myaccount/public_html/whatever rss2txt.pl http://whatever.com/feed 但是当我作为一个cron工作input相同的命令时,我得到: Can't locate XML/RSS.pm in @INC (@INC contains: /home/myaccount/public_html/whatever /usr/local/lib/perl5/5.8.8/x86_64-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/x86_64-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl . .) at rss2txt.pl line 21. BEGIN failed–compilation aborted at rss2txt.pl line 21. 尽pipeRSS.pm在同一个目录( /home/myaccount/public_html/whatever )旁边,并且它在@INC中有这个path,而且我已经做了一个cd到正确的文件夹如果还是这样的话。 记住它是共享主机,所以我不能改变全局设置,我怎么说服perl去寻找RSS.pm在/home/myaccount/public_html/whatever ? 不确定它是相关的,但这里是rss2txt.pl:http://pastebin.com/GWKZtJCN ramrumabuild议把它变成一个shell脚本(见下文)。 我在这里包括我的尝试,因为评论不能是多行的: #!/bin/bash PERL5LIB=$HOME/public_html/whatever PATH=$PATH;$HOME/public_html/whatever cd $HOME/public_html/whatever perl -w -I$HOME/public_html/whatever rss2txt.pl http://whatever.com/feed 尽pipe将该文件夹添加到PERL5LIB,PATH和@INC,但该shell脚本甚至不能从SSH控制台运行。 所以如果我们能得到这个shell脚本,我想我们会解决这个问题的。
我在NAS4FREE上用Finch-Freebsd创build了一个监狱,并添加了一个本地非超级用户通过ssh访问监狱。 我希望能够授予这个用户有限的访问权限专门closures监狱,并开始closures监狱驻留的服务器 我怎样才能让上述用户有限的shell命令权启动关机命令? 到目前为止,试图启动一个sh /etc/rc.shutdown 我得到以下输出 eval:无法打开/var/run/cron.pid:权限被拒绝停止sshd。 kill:12060:不允许操作停止lighttpd。 kill:12001:不允许操作eval:无法打开/var/db/mysql/RemandYard.pid:权限被拒绝pututxline:权限被拒绝终止
我如何从shell获得root权限? 当我试图使用su我得到: default@default-laptop:~/home/default$ su Password: su: Authentication error default@default-laptop:~/home/default$
一个使用* nix的新手(我实际上在OS X 10.5中使用了一个bash shell),我想知道可能很简单的答案是什么? 当我编写一个脚本(称为my_script)并将其保存到当前目录中时,为什么必须在其名称前加上句点和正斜杠才能运行它? 喜欢这个: ./my_script shell不能告诉我想从当前目录运行它吗? Windows似乎处理这种情况。 干杯本
我有一个由shell脚本启动的c ++代码。 shell脚本具有以下行来启动c ++代码/home/user/test_client/a.out现在我想捕获这个代码的输出在一个名为message.log的文件中message.log什么是正确的方法来做到这一点? 我已经尝试/home/user/test_client/a.out >> message.log它不起作用。 我在这里做错了什么?
我有一个大小为6.2 GB的日志文件,这个日志文件正在被进程使用,并且不断的写入日志到这个文件中。 现在我不想旋转日志,但是我想清除这个日志文件。 我想从这个文件中删除6个月以前的日志。 是否有可能使用shell脚本来读取日志文件并删除超过6个月的日志? 下面是日志格式 10.0.3.xx – – [17/Jun/2016:14:21:59 +0000] "GET /visible_topics HTTP/1.1" 200 581 "-" "help/97a1dd7eb981421b9719adde381560a78bed0b66 (ip-10-0-3-xxx; user1; 4411) ruby/2.3.0 (0; x86_64-linux)"
在我们的一个服务器的apache错误日志(/ usr / local / apache / logs / error_log)中,我们看到一个经常运行的shell命令,它会抛出一个错误,如下所示: sh: list_price: command not found list_price是我们在超过50个网站的电子商务系统中使用的字段,当然没有可疑的。 问题是我们不知道如何传递给shell – 我们已经检查了exec()和system()的所有事件,我们不知道这是如何传递的。 有没有什么办法可以更容易地发现这个来源是什么,因为没有什么比上面提到的更有意义的输出。 仅供参考,在运行CentOS 5的服务器上,所涉及的站点都是PHP。
我有一些生成一些输出的shell脚本。 输出写入文件。 在我的cronjob我有:./myscript.sh –options>输出因为cronjob每周运行,我想保留一个输出列表,而不是每次脚本运行覆盖它们。 所以理想情况下,我想输出文件的名称为output_ date 。 date是当前脚本运行date。 在Unix中,date命令可以给你当前的date信息,但是我怎样才能把它集成到输出文件名? 更新: 已经尝试了希思和wfaulk的方法,它工作得很好。 但是,当我把相同的命令放在cronjob中时,我开始得到错误:/ bin / sh:-c:line 0:unexpected EOF while looking for match')'/ bin / sh:-c:line 1:syntax错误:意外的文件结束 我知道这是由输出到一个名为输出_ $(date+%Y%m%d)的文件,因为这是我做的唯一的更改。 在cronjob中有没有不同的方法呢?
这是一个我似乎无法find好答案的问题。 在Windows / DOS环境下,我们已经“教导”,可以使用当前目录启动程序,而不必在path前缀。 但是,Linux的默认行为是必须在当前目录中为应用程序/脚本添加前缀./。 人们说,允许程序/脚本在不加目录的前提下执行是一种不好的安全措施。 有很多“不好的安全措施”,但这个对我来说没有意义。 例如,我不打算进入/ some / unfamiliar /目录并开始执行像ls这样的程序。 我会cd(到我的主目录),然后键入ls -la / some / unfamiliar /目录。 当然,我会在糟糕的一天。 如果有人把一个名为ls的程序放在一个目录中,并且一个坏的系统pipe理员将该目录设置为该目录并以root身份运行ls,并且ls添加了一个后门用户和其他恶意的东西,我可以看到“威胁”。 精细。 但是,通常在这种情况下,用户会抱怨“哦,我不行,你可以检查吗?” 我会sudo su“用户”,并尝试ls作为他。 除非我完全错过了一些东西,否则加上“。” 到你的PATH真的那么糟糕? 编辑: 到目前为止,所有的答案都可以用来指出安全风险 – 然而,每个人都缺lessWindows的论点。 在Windows下,当前目录不在您的path中,所以无法禁用运行program.exe afaik的function。 但是,命令提示符确实接受了以。\(。\为前缀的function,但是,您应该使用\否则可能会以某种types的转义序列结束)。 在Windows下我们应该总是在命令的前面? 另外,我们是否应该联系微软,并告诉他们他们不善于植入这种预期的行为? 我的背景是Windows,所以我偏偏期待当前目录中的程序能够运行,尽pipe我知道这不是Unix世界中的方式。 这就是为什么我在那里提出这个问题。 为了扩大“坏的安全实践”(以及为什么他们在报价中)的含义,是因为我们可以引用数百万甚至数十亿的安全做法,人们应该这样做…但是我们不这样做,如果我们做了,一个人肯定会疯了。 我们是否应该减轻每个安全风险,并有可能干扰用户的体验? 我说不,但是因为我认为安全性应该对用户是透明的,但是我喜欢haus的第一句话:“和其他任何东西一样,它是一种心态。” 我想我们应该放弃这一点。
我不知道如何说出这个标题。 我需要输出如下: [~]# cat file user1 domain1.com user2 domain2.com user3 domain3.com 并将其转化为如下输出: user1 domain1.com user2 domain2.com user3 domain3.com 任何援助在这里将不胜感激。