- 论坛徽章:
- 16
|
本帖最后由 rdcwayx 于 2013-04-10 11:57 编辑
- execve("/bin/sh", ["sh", "-x", "test.sh"], [/* 24 vars */]) = 0
- brk(0) = 0x84ae000
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b5853000
- uname({sys="Linux", node="code", ...}) = 0
- access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
- open("/etc/ld.so.cache", O_RDONLY) = 3
- fstat(3, {st_mode=S_IFREG|0644, st_size=66862, ...}) = 0
- mmap(NULL, 66862, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b14b5854000
- close(3) = 0
- open("/lib64/libtermcap.so.2", O_RDONLY) = 3
- read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\17\240\2318\0\0\0"..., 832) = 832
- fstat(3, {st_mode=S_IFREG|0755, st_size=15584, ...}) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b5865000
- mmap(0x3899a00000, 2108688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3899a00000
- mprotect(0x3899a03000, 2093056, PROT_NONE) = 0
- mmap(0x3899c02000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x3899c02000
- close(3) = 0
- open("/lib64/libdl.so.2", O_RDONLY) = 3
- read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16 \2318\0\0\0"..., 832) = 832
- fstat(3, {st_mode=S_IFREG|0755, st_size=23360, ...}) = 0
- mmap(0x3899200000, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3899200000
- mprotect(0x3899202000, 2097152, PROT_NONE) = 0
- mmap(0x3899402000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x3899402000
- close(3) = 0
- open("/lib64/libc.so.6", O_RDONLY) = 3
- read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\332\341\2308\0\0\0"..., 832) = 832
- fstat(3, {st_mode=S_IFREG|0755, st_size=1717800, ...}) = 0
- mmap(0x3898e00000, 3498328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3898e00000
- mprotect(0x3898f4e000, 2093056, PROT_NONE) = 0
- mmap(0x389914d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14d000) = 0x389914d000
- mmap(0x3899152000, 16728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3899152000
- close(3) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b5866000
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b5867000
- arch_prctl(ARCH_SET_FS, 0x2b14b5866dd0) = 0
- mprotect(0x3899402000, 4096, PROT_READ) = 0
- mprotect(0x389914d000, 16384, PROT_READ) = 0
- mprotect(0x3898c1b000, 4096, PROT_READ) = 0
- munmap(0x2b14b5854000, 66862) = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- open("/dev/tty", O_RDWR|O_NONBLOCK) = 3
- close(3) = 0
- brk(0) = 0x84ae000
- brk(0x84cf000) = 0x84cf000
- open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
- fstat(3, {st_mode=S_IFREG|0644, st_size=56413600, ...}) = 0
- mmap(NULL, 56413600, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b14b5868000
- close(3) = 0
- getuid() = 0
- getgid() = 0
- geteuid() = 0
- getegid() = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- time(NULL) = 1365486541
- open("/proc/meminfo", O_RDONLY) = 3
- fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b8e35000
- read(3, "MemTotal: 1048576 kB\nMemFre"..., 4096) = 682
- close(3) = 0
- munmap(0x2b14b8e35000, 4096) = 0
- rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], 0}, 8) = 0
- rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], 0}, 8) = 0
- rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], 0}, 8) = 0
- rt_sigaction(SIGQUIT, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- rt_sigaction(SIGQUIT, {0x1, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- uname({sys="Linux", node="code", ...}) = 0
- stat("/root", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
- stat(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
- getpid() = 24159
- open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3
- fstat(3, {st_mode=S_IFREG|0644, st_size=25464, ...}) = 0
- mmap(NULL, 25464, PROT_READ, MAP_SHARED, 3, 0) = 0x2b14b8e35000
- close(3) = 0
- getppid() = 24158
- stat(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
- stat("/usr/kerberos/sbin/sh", 0x7fffcbf24cf0) = -1 ENOENT (No such file or directory)
- stat("/usr/kerberos/bin/sh", 0x7fffcbf24cf0) = -1 ENOENT (No such file or directory)
- stat("/usr/local/sbin/sh", 0x7fffcbf24cf0) = -1 ENOENT (No such file or directory)
- stat("/usr/local/bin/sh", 0x7fffcbf24cf0) = -1 ENOENT (No such file or directory)
- stat("/sbin/sh", 0x7fffcbf24cf0) = -1 ENOENT (No such file or directory)
- stat("/bin/sh", {st_mode=S_IFREG|0755, st_size=801512, ...}) = 0
- access("/bin/sh", X_OK) = 0
- access("/bin/sh", R_OK) = 0
- stat("/bin/sh", {st_mode=S_IFREG|0755, st_size=801512, ...}) = 0
- access("/bin/sh", X_OK) = 0
- access("/bin/sh", R_OK) = 0
- getpgrp() = 24158
- rt_sigaction(SIGCHLD, {0x436080, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- open("test.sh", O_RDONLY) = 3
- ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffcbf24da0) = -1 ENOTTY (Inappropriate ioctl for device)
- lseek(3, 0, SEEK_CUR) = 0
- read(3, "#!/bin/bash\nset -xv\nvar=1\ncat ce"..., 80) = 80
- lseek(3, 0, SEEK_SET) = 0
- getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
- dup2(3, 255) = 255
- close(3) = 0
- fcntl(255, F_SETFD, FD_CLOEXEC) = 0
- fcntl(255, F_GETFL) = 0x8000 (flags O_RDONLY|O_LARGEFILE)
- fstat(255, {st_mode=S_IFREG|0644, st_size=137, ...}) = 0
- lseek(255, 0, SEEK_CUR) = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- read(255, "#!/bin/bash\nset -xv\nvar=1\ncat ce"..., 137) = 137
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b8e3c000
- write(2, "+ set -xv\n", 10+ set -xv
- ) = 10
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- write(2, "var=1\n", 6var=1
- ) = 6
- write(2, "+ var=1\n", 8+ var=1
- ) = 8
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- write(2, "cat ceshi | while read lin1\n", 28cat ceshi | while read lin1
- ) = 28
- write(2, "do\n", 3do
- ) = 3
- write(2, "echo \"start $var\"\n", 18echo "start $var"
- ) = 18
- write(2, "let 'var+=1'\n", 13let 'var+=1'
- ) = 13
- write(2, "echo $var\n", 10echo $var
- ) = 10
- write(2, "done\n", 5done
- ) = 5
- rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
- pipe([3, 4]) = 0
- rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
- lseek(255, -34, SEEK_CUR) = 103
- clone(+ cat ceshi
- child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b14b5866e60) = 24160
- rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
- close(4) = 0
- close(4) = -1 EBADF (Bad file descriptor)
- rt_sigprocmask(SIG_BLOCK, [INT CHLD], [CHLD], 8) = 0
- clone(+ read lin1
- + echo 'start 1'
- start 1
- + let var+=1
- + echo 2
- 2
- + read lin1
- + echo 'start 2'
- start 2
- + let var+=1
- + echo 3
- 3
- + read lin1
- + echo 'start 3'
- start 3
- + let var+=1
- + echo 4
- 4
- + read lin1
- + echo 'start 4'
- start 4
- + let var+=1
- + echo 5
- 5
- + read lin1
- + echo 'start 5'
- start 5
- + let var+=1
- + echo 6
- 6
- + read lin1
- + echo 'start 6'
- start 6
- + let var+=1
- + echo 7
- 7
- + read lin1
- + echo 'start 7'
- start 7
- + let var+=1
- + echo 8
- 8
- + read lin1
- + echo 'start 8'
- start 8
- + let var+=1
- + echo 9
- 9
- + read lin1
- + echo 'start 9'
- start 9
- + let var+=1
- + echo 10
- 10
- + read lin1
- + echo 'start 10'
- start 10
- + let var+=1
- + echo 11
- 11
- + read lin1
- child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b14b5866e60) = 24161
- rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
- close(3) = 0
- rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
- rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
- rt_sigprocmask(SIG_BLOCK, [CHLD], [CHLD], 8) = 0
- rt_sigaction(SIGINT, {0x436c60, [], SA_RESTORER, 0x3898e302d0}, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 24160
- wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 24161
- rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0
- rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x3898e302d0}, {0x436c60, [], SA_RESTORER, 0x3898e302d0}, 8) = 0
- close(3) = -1 EBADF (Bad file descriptor)
- rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
- --- SIGCHLD (Child exited) @ 0 (0) ---
- wait4(-1, 0x7fffcbf24864, WNOHANG, NULL) = -1 ECHILD (No child processes)
- rt_sigreturn(0xffffffffffffffff) = 0
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- read(255, "echo \"check var values\"\necho $va"..., 137) = 34
- write(2, "echo \"check var values\"\n", 24echo "check var values"
- ) = 24
- write(2, "+ echo 'check var values'\n", 26+ echo 'check var values'
- ) = 26
- fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b14b8e3d000
- write(1, "check var values\n", 17check var values
- ) = 17
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- write(2, "echo $var\n", 10echo $var
- ) = 10
- write(2, "+ echo 1\n", 9+ echo 1
- ) = 9
- write(1, "1\n", 21
- ) = 2
- rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
- read(255, "", 137) = 0
- exit_group(0) = ?
复制代码 从上面的输出看var在while循环里是一个private的变量作用于只限于while循环体。
命令是strace sh -x test.sh
其中test.sh 是你上面的脚本,只是在循环中var多打印了一下。 |
|