zoukankan      html  css  js  c++  java
  • shell编程

                                                 (1)追踪一下  shell  strace    

                                                              ./strace   ./command.sh      

    # ./strace ./command.sh
    execve("./command.sh", ["./command.sh"], 0x7ff0f82270 /* 13 vars */) = 0
    brk(NULL)                               = 0xa2ea000
    faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/data/usrlibs/tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/data/usrlibs/tls/aarch64", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/data/usrlibs/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/data/usrlibs/tls", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/data/usrlibs/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/data/usrlibs/aarch64", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/data/usrlibs/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/data/usrlibs", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib64/tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/lib64/tls/aarch64", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib64/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/lib64/tls", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib64/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    newfstatat(AT_FDCWD, "/lib64/aarch64", 0x7fd3b19fc0, 0) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\270\374\1\0\0\0\0\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=1279888, ...}) = 0
    mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7d5ad000
    mmap(NULL, 1352480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7d43a000
    mprotect(0x7f7d56c000, 61440, PROT_NONE) = 0
    mmap(0x7f7d57b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x131000) = 0x7f7d57b000
    mmap(0x7f7d581000, 13088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7d581000
    close(3)                                = 0
    mprotect(0x7f7d57b000, 16384, PROT_READ) = 0
    mprotect(0x4b5000, 4096, PROT_READ)     = 0
    mprotect(0x7f7d5b1000, 4096, PROT_READ) = 0
    getuid()                                = 0
    brk(NULL)                               = 0xa2ea000
    brk(0xa30b000)                          = 0xa30b000
    getpid()                                = 176
    rt_sigaction(SIGCHLD, {sa_handler=0x4334a4, sa_mask=~[RTMIN RT_1], sa_flags=0}, NULL, 8) = 0
    rt_sigaction(SIGHUP, {sa_handler=SIG_DFL, sa_mask=[HUP], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
    getppid()                               = 173
    uname({sysname="Linux", nodename="rockchip", ...}) = 0
    newfstatat(AT_FDCWD, "/mnt", {st_mode=S_IFDIR|0775, st_size=4096, ...}, 0) = 0
    newfstatat(AT_FDCWD, ".", {st_mode=S_IFDIR|0775, st_size=4096, ...}, 0) = 0
    openat(AT_FDCWD, "./command.sh", O_RDONLY) = 3
    fcntl(3, F_DUPFD, 10)                   = 10
    close(3)                                = 0
    fcntl(10, F_SETFD, FD_CLOEXEC)          = 0
    rt_sigaction(SIGINT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
    rt_sigaction(SIGINT, {sa_handler=0x4334a4, sa_mask=~[RTMIN RT_1], sa_flags=0}, NULL, 8) = 0
    rt_sigaction(SIGQUIT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
    rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=~[RTMIN RT_1], sa_flags=0}, NULL, 8) = 0
    rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
    rt_sigaction(SIGTERM, {sa_handler=SIG_DFL, sa_mask=~[RTMIN RT_1], sa_flags=0}, NULL, 8) = 0
    read(10, "#! /bin/sh\n\n\nsleep 10s\nprintf \"h"..., 1023) = 41
    newfstatat(AT_FDCWD, "/bin/sleep", {st_mode=S_IFREG|S_ISUID|0755, st_size=685024, ...}, 0) = 0
    clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f7d5adc40) = 177
    wait4(-1,
    

         调试技术:

          shell中打印:

                                   echo "xxxxxxxxxxxxxxxx"

                                   printf "xxxxxxxxxxxxx\n"

             shell中注释:  

                                方法一:   行注释:  #

    #! /bin/sh
    :<<eof
    sleep 1s
    i am is programmer \n
    i am is doctor
    printf "hello\n"
    eof
    

                          方法二: 

                                        :<<!

                                        !

                               方法三:

                                          if  false; then 

                                          xxxxxxxx

                                          xxxxxxxxxx

                                          fi 

                                方法四

            shell 中控制语句:

                                 有个坑:  if 后面[ ]  这个符号 

    xxflag  = 0
    if [ -f "/jffs2/xxx.sh" ]; then 
       /jffs2/xxxx.sh &
       xxxflag=1
    fi 
    

                  shell中 sleep

           论shell后台运行的重要性:            否则里面有阻塞操作就会导致卡顿

                                                                source     xxx  &  

                      shell中函数调用和函数定义:

                       

           

                                                    

                              

                           

          

                        

                                  

           

    一勤天下无难事。
  • 相关阅读:
    Android开发之Sqlite的使用
    ZOJ 3607 Lazier Salesgirl
    ZOJ 3769 Diablo III
    ZOJ 2856 Happy Life
    Ural 1119 Metro
    Ural 1146 Maximum Sum
    HDU 1003 Max Sum
    HDU 1160 FatMouse's Speed
    Ural 1073 Square Country
    Ural 1260 Nudnik Photographer
  • 原文地址:https://www.cnblogs.com/nowroot/p/12517130.html
Copyright © 2011-2022 走看看