bash – 为什么Perl的打印不能输出任何东西到STDOUT和STDERR,但是写入文件成功?

我试图从以下Perl脚本打印到标准版本,但它不会在屏幕上产生任何输出.然而,它会打印到文件.
#!/usr/bin/perl
use warnings;
use strict;

print "Here's some text\n";
print STDERR "Here's some text\n";
print STDOUT "Here's some text\n";

open FH,">","file.txt" or die $!;

print FH "Here's some text\n";

我试着检查我使用的perl版本(perl -v),但是也没有输出任何东西. perl手册页面告诉我我正在使用5.14.2.我从Raspberry Pi的bash提示符中运行Perl脚本.

我看到这个类似的帖子Print: producing no output,所以我用strace,看到输出没有包括任何写命令.

strace perl -we'print("a") or die("Can'\''t print: $!\n");'

以下是完整脚本的strace输出:

execve("./response",["./response"],[/* 18 vars */]) = 0
brk(0)                                  = 0xd98000
uname({sys="Linux",node="raspberrypi",...}) = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0xb6f99000
access("/etc/ld.so.preload",R_OK)      = 0
open("/etc/ld.so.preload",O_RDONLY)    = 3
fstat64(3,{st_mode=S_IFREG|0644,st_size=44,...}) = 0
mmap2(NULL,44,MAP_PRIVATE,3,0) = 0xb6f98000
close(3)                                = 0
open("/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so",O_RDONLY) = 3
read(3,"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\270\4\0\0004\0\0\0"...,512) = 512
lseek(3,7276,SEEK_SET)                = 7276
read(3,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,1080) = 1080
lseek(3,7001,SEEK_SET)                = 7001
read(3,"A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"...,47) = 47
fstat64(3,{st_mode=S_IFREG|0755,st_size=10170,39740,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,0) = 0xb6f6c000
mprotect(0xb6f6e000,28672,PROT_NONE)  = 0
mmap2(0xb6f75000,4096,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,0x1) = 0xb6f75000
close(3)                                = 0
munmap(0xb6f98000,44)                  = 0
open("/etc/ld.so.cache",O_RDONLY)      = 3
fstat64(3,st_size=64456,64456,PROT_READ,0) = 0xb6f5c000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libperl.so.5.14","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\220\v\2\0004\0\0\0"...,1346508,SEEK_SET)             = 1346508
read(3,1120) = 1120
lseek(3,1346184,SEEK_SET)             = 1346184
read(3,"A2\0\0\0aeabi\0\1(\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"...,51) = 51
fstat64(3,st_size=1347628,1379192,0) = 0xb6e0b000
mprotect(0xb6f4f000,32768,PROT_NONE)  = 0
mmap2(0xb6f57000,20480,0x144) = 0xb6f57000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libdl.so.2","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(\t\0\0004\0\0\0"...,8652,SEEK_SET)                = 8652
read(3,1160) = 1160
lseek(3,8320,SEEK_SET)                = 8320
read(3,"A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"...,49) = 49
fstat64(3,st_size=9812,41136,0) = 0xb6e00000
mprotect(0xb6e02000,PROT_NONE)  = 0
mmap2(0xb6e09000,0x1) = 0xb6e09000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libm.so.6","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\3201\0\0004\0\0\0"...,426468,SEEK_SET)              = 426468
read(3,426136,SEEK_SET)              = 426136
read(3,st_size=427628,458912,0) = 0xb6d8f000
mprotect(0xb6df7000,PROT_NONE)  = 0
mmap2(0xb6dfe000,0x67) = 0xb6dfe000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libpthread.so.0","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\274V\0\0004\0\0\0"...,82712,SEEK_SET)               = 82712
read(3,1400) = 1400
lseek(3,82308,SEEK_SET)               = 82308
read(3,st_size=116462,123412,0) = 0xb6d70000
mprotect(0xb6d84000,PROT_NONE)  = 0
mmap2(0xb6d8b000,0x13) = 0xb6d8b000
mmap2(0xb6d8d000,4628,MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,0) = 0xb6d8d000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214y\1\0004\0\0\0"...,1215264,SEEK_SET)             = 1215264
read(3,1360) = 1360
lseek(3,1214828,SEEK_SET)             = 1214828
read(3,st_size=1216624,0) = 0xb6f98000
mmap2(NULL,1258784,0) = 0xb6c3c000
mprotect(0xb6d62000,PROT_NONE)  = 0
mmap2(0xb6d6a000,12288,0x126) = 0xb6d6a000
mmap2(0xb6d6d000,9504,0) = 0xb6d6d000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libcrypt.so.1","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\30\7\0\0004\0\0\0"...,29116,SEEK_SET)               = 29116
read(3,28780,SEEK_SET)               = 28780
read(3,st_size=30276,221504,0) = 0xb6c05000
mprotect(0xb6c0c000,PROT_NONE)  = 0
mmap2(0xb6c13000,0x6) = 0xb6c13000
mmap2(0xb6c15000,155968,0) = 0xb6c15000
close(3)                                = 0
access("/etc/ld.so.nohwcap",F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libgcc_s.so.1","\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`\364\0\0004\0\0\0"...,130212,SEEK_SET)              = 130212
read(3,129880,SEEK_SET)              = 129880
read(3,st_size=131372,162704,0) = 0xb6bdd000
mprotect(0xb6bfd000,PROT_NONE)  = 0
mmap2(0xb6c04000,0x1f) = 0xb6c04000
close(3)                                = 0
mmap2(NULL,0) = 0xb6f97000
set_tls(0xb6f976d0,0xb6f97da8,0xb6f9c048,0xb6f976d0,0xb6f9c048) = 0
mprotect(0xb6c13000,PROT_READ)   = 0
mprotect(0xb6d6a000,PROT_READ)   = 0
mprotect(0xb6d8b000,PROT_READ)   = 0
mprotect(0xb6dfe000,PROT_READ)   = 0
mprotect(0xb6e09000,PROT_READ)   = 0
mprotect(0xb6f57000,PROT_READ)   = 0
mprotect(0x11000,PROT_READ)      = 0
mprotect(0xb6f9b000,PROT_READ)   = 0
munmap(0xb6f5c000,64456)               = 0
set_tid_address(0xb6f97278)             = 12607
set_robust_list(0xb6f97280,0xc)        = 0
futex(0xbece6778,FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME,1,NULL,b6d8c000) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN,{0xb6d7520c,[],SA_SIGINFO|0x4000000},8) = 0
rt_sigaction(SIGRT_1,{0xb6d750b4,SA_RESTART|SA_SIGINFO|0x4000000},8) = 0
rt_sigprocmask(SIG_UNBLOCK,[RTMIN RT_1],8) = 0
getrlimit(RLIMIT_STACK,{rlim_cur=8192*1024,rlim_max=RLIM_INFINITY}) = 0
rt_sigaction(SIGFPE,{SIG_IGN,[FPE],SA_RESTART|0x4000000},{SIG_DFL,0},8) = 0
brk(0)                                  = 0xd98000
brk(0xdb9000)                           = 0xdb9000
getuid32()                              = 1001
geteuid32()                             = 1001
getgid32()                              = 1004
getegid32()                             = 1004
open("/usr/lib/locale/locale-archive",O_RDONLY|O_LARGEFILE) = 3
fstat64(3,st_size=1534656,1534656,0) = 0xb6a66000
close(3)                                = 0
open("/dev/urandom",O_RDONLY|O_LARGEFILE) = 3
read(3,"~\210\223\234",4)             = 4
close(3)                                = 0
gettimeofday({1460938704,307768},NULL) = 0
readlink("/proc/self/exe","/usr/bin/perl",4095) = 13
stat64("/usr/local/lib/site_perl/5.14.2/arm-linux-gnueabihf-thread-multi-64int",0xbece6368) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/site_perl/5.14.2",0xbece6368) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/site_perl/arm-linux-gnueabihf-thread-multi-64int",0xbece6368) = -1 ENOENT (No such file or directory)
open("./response",O_RDONLY|O_LARGEFILE) = 3
ioctl(3,SNDCTL_TMR_TIMEBASE or TCGETS,0xbece627c) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3,[0],SEEK_CUR)            = 0
fcntl64(3,F_SETFD,FD_CLOEXEC)         = 0
rt_sigaction(SIGCHLD,8) = 0
brk(0xddb000)                           = 0xddb000
read(3,"#!/usr/bin/perl\nuse warnings;\nus"...,8192) = 210
stat64("/etc/perl/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/etc/perl/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/perl/5.14.2/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/perl/5.14.2/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/local/share/perl/5.14.2/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/local/share/perl/5.14.2/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl5/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl5/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl/5.14/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl/5.14/warnings.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl/5.14/warnings.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl/5.14/warnings.pm",st_size=15015,...}) = 0
open("/usr/share/perl/5.14/warnings.pm",O_RDONLY|O_LARGEFILE) = 4
ioctl(4,0xbece5be4) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4,SEEK_CUR)            = 0
read(4,"# -*- buffer-read-only: t -*-\n# "...,8192) = 8192
read(4,"08\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x"...,8192) = 6823
read(4,"",8192)                       = 0
close(4)                                = 0
brk(0xdfc000)                           = 0xdfc000
stat64("/etc/perl/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/etc/perl/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/perl/5.14.2/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/local/lib/perl/5.14.2/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/local/share/perl/5.14.2/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/local/share/perl/5.14.2/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl5/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl5/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl/5.14/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl/5.14/strict.pm",0xbece5d90) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl/5.14/strict.pmc",0xbece5e10) = -1 ENOENT (No such file or directory)
stat64("/usr/share/perl/5.14/strict.pm",st_size=879,...}) = 0
open("/usr/share/perl/5.14/strict.pm","package strict;\n\n$strict::VERSIO"...,8192) = 879
_llseek(4,878,[878],SEEK_SET)        = 0
_llseek(4,SEEK_CUR)          = 0
close(4)                                = 0
read(3,8192)                       = 0
open("file.txt",O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE,0666) = 4
ioctl(4,0xbece614c) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(4,SEEK_CUR)            = 0
fstat64(4,st_size=0,...}) = 0
fcntl64(4,FD_CLOEXEC)         = 0
rt_sigaction(SIG_0,{0xb6e18dc4,[TRAP RTMIN RT_1 RT_2 RT_3 RT_12 RT_13 RT_15 RT_16 RT_18 RT_19 RT_20 RT_25 RT_26 RT_27 RT_28 RT_29],SA_SIGINFO|0x85b8},8) = -1 EINVAL (Invalid argument)
rt_sigaction(SIGHUP,8) = 0
rt_sigaction(SIGINT,8) = 0
rt_sigaction(SIGQUIT,8) = 0
rt_sigaction(SIGILL,8) = 0
rt_sigaction(SIGTRAP,8) = 0
rt_sigaction(SIGABRT,8) = 0
rt_sigaction(SIGBUS,8) = 0
rt_sigaction(SIGFPE,8) = 0
rt_sigaction(SIGKILL,8) = 0
rt_sigaction(SIGUSR1,8) = 0
rt_sigaction(SIGSEGV,8) = 0
rt_sigaction(SIGUSR2,8) = 0
rt_sigaction(SIGPIPE,8) = 0
rt_sigaction(SIGALRM,8) = 0
rt_sigaction(SIGTERM,8) = 0
rt_sigaction(SIGSTKFLT,8) = 0
rt_sigaction(SIGCHLD,8) = 0
rt_sigaction(SIGCONT,8) = 0
rt_sigaction(SIGSTOP,8) = 0
rt_sigaction(SIGTSTP,8) = 0
rt_sigaction(SIGTTIN,8) = 0
rt_sigaction(SIGTTOU,8) = 0
rt_sigaction(SIGURG,8) = 0
rt_sigaction(SIGXCPU,8) = 0
rt_sigaction(SIGXFSZ,8) = 0
rt_sigaction(SIGVTALRM,8) = 0
rt_sigaction(SIGPROF,8) = 0
rt_sigaction(SIGWINCH,8) = 0
rt_sigaction(SIGIO,8) = 0
rt_sigaction(SIGPWR,8) = 0
rt_sigaction(SIGSYS,8) = 0
rt_sigaction(SIGRT_2,8) = 0
rt_sigaction(SIGRT_3,8) = 0
rt_sigaction(SIGRT_4,8) = 0
rt_sigaction(SIGRT_5,8) = 0
rt_sigaction(SIGRT_6,8) = 0
rt_sigaction(SIGRT_7,8) = 0
rt_sigaction(SIGRT_8,8) = 0
rt_sigaction(SIGRT_9,8) = 0
rt_sigaction(SIGRT_10,8) = 0
rt_sigaction(SIGRT_11,8) = 0
rt_sigaction(SIGRT_12,8) = 0
rt_sigaction(SIGRT_13,8) = 0
rt_sigaction(SIGRT_14,8) = 0
rt_sigaction(SIGRT_15,8) = 0
rt_sigaction(SIGRT_16,8) = 0
rt_sigaction(SIGRT_17,8) = 0
rt_sigaction(SIGRT_18,8) = 0
rt_sigaction(SIGRT_19,8) = 0
rt_sigaction(SIGRT_20,8) = 0
rt_sigaction(SIGRT_21,8) = 0
rt_sigaction(SIGRT_22,8) = 0
rt_sigaction(SIGRT_23,8) = 0
rt_sigaction(SIGRT_24,8) = 0
rt_sigaction(SIGRT_25,8) = 0
rt_sigaction(SIGRT_26,8) = 0
rt_sigaction(SIGRT_27,8) = 0
rt_sigaction(SIGRT_28,8) = 0
rt_sigaction(SIGRT_29,8) = 0
rt_sigaction(SIGRT_30,8) = 0
rt_sigaction(SIGRT_31,8) = 0
rt_sigaction(SIGRT_32,8) = 0
write(4,"Here's some text\n",17)      = 17
close(4)                                = 0
close(3)                                = 0
exit_group(0)                           = ?

关于为什么不产生产出的任何想法?一个bash脚本可以将文本回显为标准格式.

当我在调试模式下运行脚本时,它会打印输出.

在命令行执行perl -v后,退出代码从$?是0.

执行

perl -e'print "foo" or die $!'

给出并退出9的代码,但这似乎是由于死亡. perl -v>文件没有写任何文件.

这是stat STDOUT的输出和用于将其写入文件的命令:

45826 | 261126 | 33188 | 1 | 1001 | 1004 | 0 | 0 | 1461024408 | 1461035504 | 1461035504 | 4096 | 0

perl -e 'open my $FH,">file"; print $FH join "|",stat STDOUT '
开始阅读之前,先看看这个命令的输出.一切都指向STDOUT指向不正确的地方.
ls -l /proc/$$/fd/{1,2}

在我的系统上,我得到这一点,请注意它会改变,因为我写这个,因为这不是一次写的.

lrwx------ 1 root root 64 May  3 17:01 /proc/27806/fd/1 -> /dev/pts/1
lrwx------ 1 root root 64 May  3 17:01 /proc/27806/fd/2 -> /dev/pts/1

我怀疑以上与你相似.这个统计数据对我来说看起来很可疑,如果我有机会访问我搜索inode的文件,它告诉我写给ie.

sudo find / -printf "%i:\t%p\n"|grep 261126

如果Perl开始改变它是stdout等到错误的地方,我会添加一个很长的睡眠脚本,然后进行搜索,看看它在哪里.如果文件是普通文件,并且它在文件系统上,应该找到它.

我的STDOUT统计

|dev   |inode  |mode  |link |uid |gid |rdev |size |atime     |mtime     |ctime     |blk |blka
|13    |3      |8592  |1    |1000|5   |34816|0    |1462301986|1462301986|1462301958|1024|0

您的STDOUT统计

|dev   |inode  |mode  |link |uid |gid |rdev |size |atime     |mtime     |ctime     |blk |blka
|45826 |261126 |33188 |1    |1001|1004|0    |0    |1461024408|1461035504|1461035504|4096|0

在我的我的dev有小数13,看起来确定,当我在设备下搜索它.如果我们掩盖你的主要/未成年人你有…

major == 179
minor == 2

注意,我原来有这些相反,直到Wumpus Q. Wumbley修正.

在我的机器上

crw-------  1 root  root   2,179 Apr 29 12:50 ptya3

在我的我的rdev等于

major == 136 
minor == 0

在我的Debian系统上,这是/ dev / pts / 0.你的rdev是0.我有一个快速的回顾,有些人使用屏幕可以有/ dev / pts / N的问题,即它不在那里,但这是我猜.

strace也很奇怪,当我在系统中写下来时,我得到了以下几行:

read(3,"#!/usr/bin/perl -w\n#use strict;\n"...,8192) = 228
read(3,8192)                       = 0
close(3)                                = 0
write(1,"Here's some text STDOUT\n",24Here's some text STDOUT
) = 24
write(2,"Here's some text STDERR\n",24Here's some text STDERR
) = 24
write(1,24Here's some text STDOUT
) = 24

事实上,这些似乎没有在你的战争中是非常奇怪的.你可以用$|来改变出现在哪里但他们应该出现在某个地方. Gilles注意到模式也是奇数.如果你运行这个脚本…

#!/usr/bin/perl
use warnings;
use strict;
use Fcntl ':mode';
my $mode = 33188;
my $user_rwx      = ($mode & S_IRWXU) >> 6;
print("user_rwx      = $user_rwx\n");
my $group_read    = ($mode & S_IRGRP) >> 3;
print("group_read    = $group_read\n");
my $other_execute    =  $mode & S_IXOTH;
print("other_execute = $other_execute\n");
printf "Permissions are %04o\n",S_IMODE($mode),"\n";
my $is_setuid     =  $mode & S_ISUID;
print("is_setuid     = $is_setuid\n");
my $is_directory  =  S_ISDIR($mode);
print("dir           = $is_directory\n");
my $is_reg  = S_ISREG($mode);
print("regular       = $is_reg\n");

您可以看到STDOUT似乎指向正常文件.这将确定为什么rdev为零,即如果stdout正在重定向到某个旨在成为设备的东西,但实际上只是一个正常的文件.我看到像这样的奇怪的事情发生在chrooted环境中,设备设置不正确.

不管在退出时打开还是关闭缓冲区,缓冲区都应该被刷新,即您会看到对调用sys的调用.在strace中完全没有写入是非常奇怪的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b
history显示历史指令记录内容,下达历史纪录中的指令主要的使用方法如果你想禁用history,可以将HISTSIZE设置为0:#exportHISTSIZE=0使用HISTIGNORE忽略历史中的特定命令下面的例子,将忽略pwd、ls、ls-ltr等命令:#exportHISTIGNORE=”pwd:ls:ls-ltr:”使用HIS
一.命令历史  1.history环境变量:    HISTSIZE:输出的命令历史条数,如history的记录数    HISTFILESIZE:~/.bash_history保存的命令历史记录数    HISTFILLE:历史记录的文件路径    HISTCONTROL:     ignorespace:忽略以空格开头的命令
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的she
BashOne-LinersExplained,PartI:Workingwithfileshttps://catonmat.net/bash-one-liners-explained-part-oneBashOne-LinersExplained,PartII:Workingwithstringshttps://catonmat.net/bash-one-liners-explained-part-twoBashOne-LinersExplained,PartII
Shell中变量的作用域:在当前Shell会话中使用,全局变量。在函数内部使用,局部变量。可以在其他Shell会话中使用,环境变量。局部变量:默认情况下函数内的变量也是全局变量#!/bin/bashfunctionfunc(){a=99}funcecho$a输出>>99为了让全局变量变成局部变量
1、多命令顺序执行;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系&&  命令1&&命令2  逻辑与,当命令1正确执行,才会执行命令2||  命令1||命令2  逻辑或,当命令1执行不正确,才会执行命令2例如:ls;date;cd/home/lsx;pwd;who ddif=输入文件of=输
原博文使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"。Linux执行文件时发现这个格式,会把!后的内容提取出来拼接在脚本文件或路径之前,当作实际执行的命令。 Shebang这个符号通常在Unix系统的脚本
1、历史命令history[选项][历史命令保存文件]选项:-c:  清空历史命令-w:  把缓存中的历史命令写入历史命令保存文件 ~/.bash_historyvim/etc/profile中的Histsize可改存储历史命令数量历史命令的调用使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史
目录1.Shell脚本规范2.Shell脚本执行3.Shell脚本变量3.1环境变量3.1.1自定义环境变量3.1.2显示与取消环境变量3.1.3环境变量初始化与对应文件的生效顺序3.2普通变量3.2.1定义本地变量3.2.2shell调用变量3.2.3grep调用变量3.2.4awk调用变量3.3
   http://www.voidcn.com/blog/wszzdanm/article/p-6145895.html命令功能:显示登录用户的信息命令格式:常用选项:举例:w显示已经登录的用户及正在进行的操作[root@localhost~]#w 11:22:01up4days,21:22, 3users, loadaverage:0.00,0.00,0.00USER