小编asf*_*107的帖子

使用带有nohup的别名

以下为什么不工作?

$ alias sayHello='/bin/echo "Hello world!"'
$ sayHello 
    Hello world!
$ nohup sayHello
    nohup: appending output to `nohup.out'
    nohup: cannot run command `sayHello': No such file or directory
Run Code Online (Sandbox Code Playgroud)

(我问这个问题的原因是因为我把我perlpython不同的perl/python二进制混淆了,这些二进制文件是为了我自己的目的而优化的;但是,如果我不提供perl/python二进制文件的完整路径,nohup会给我带来麻烦)

unix bash alias nohup

10
推荐指数
3
解决办法
6013
查看次数

Python vs Perl:性能读取gzip压缩文件

我有一个包含一百万行的gzip压缩文件:

$ zcat million_lines.txt.gz | head
1
2
3
4
5
6
7
8
9
10
...
Run Code Online (Sandbox Code Playgroud)

我处理此文件的Perl脚本如下:

# read_million.pl
use strict; 

my $file = "million_lines.txt.gz" ;

open MILLION, "gzip -cdfq $file |";

while ( <MILLION> ) {
    chomp $_; 
    if ($_ eq "1000000" ) {
        print "This is the millionth line: Perl\n"; 
        last; 
    }
}
Run Code Online (Sandbox Code Playgroud)

在Python中:

# read_million.py
import gzip

filename = 'million_lines.txt.gz'

fh = gzip.open(filename)

for line in fh:
    line = line.strip()
    if line == '1000000':
        print "This …
Run Code Online (Sandbox Code Playgroud)

python perl performance

9
推荐指数
1
解决办法
1402
查看次数

python浮动格式怪异?

我正在尝试调试执行非常相似的代码的两个不同的python脚本.这些脚本设置 a,这是一个简单的浮点数.

对于脚本1:

ipdb> print sys.version
2.7 (r27:82500, Jul 15 2010, 13:04:38)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)]
ipdb> type(a)
<type 'float'>
ipdb> print a
17.23105
ipdb> print '{0:.4f}'.format(a)
17.2311
Run Code Online (Sandbox Code Playgroud)

对于脚本2:

ipdb> print sys.version
2.7 (r27:82500, Jul 15 2010, 13:04:38)
ipdb> print type(a)
<type 'float'>
ipdb> print a
17.23105
ipdb> print '{0:.4f}'.format(a)
17.2310
Run Code Online (Sandbox Code Playgroud)

a在这两种情况下,格式有何不同?a如果我已经检查过它们的值是否相同,那么两个脚本之间可能有什么不同17.23105?(不幸的a是,最初设置的python代码非常非常长......我不想让每个人都拥有1000多行)

python floating-point rounding

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

将脚本限制为用户子集

假设我有一个perl(或python)脚本,它做了一些高度秘密的事情; 我只想让某些用户真正能够使用该脚本.目前,我通过维护一个只读的文本文件获得此功能,allowedUsers.txt并检查以下内容:

my $username = `whoami`; 
my %allowedUsers; 
open ALLOWED_USERS, "allowedUsers.txt"; 
while(<ALLOWED_USERS>) { 
    $allowedUsers{$_} = 1; 
}
if($allowedUsers{$username} != 1) {
    die "Sorry, user $username does not have access.\n"; 
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是因为脚本必须是可读的(否则Perl本身就无法执行它),没有什么能阻止人们简单地复制脚本,注释掉这段代码,然后运行它们的"黑客入侵"版本以规避身份检查!

有没有更好的方法来实现对用户子集的脚本执行限制?例如,我可以使用不可读的perl代码,但每个人都能以某种方式执行吗?

unix bash perl hidden

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

标签 统计

bash ×2

perl ×2

python ×2

unix ×2

alias ×1

floating-point ×1

hidden ×1

nohup ×1

performance ×1

rounding ×1