Linux系统学习总结

1. C语言运算符优先级

2. bluez-dbus-glib之间的调用关系图


0. vim进入0x模式,可以使用hexedit,查看器(hexdump )

    %!xxd 返回 %!xxd -r
    ps:objcopy objdump -t *.so, readelf -s *.so)
    svn add 命令 递归目录下所有文件
    svn add . --no-ignore --force
    ubuntu16.04 gcc: error trying to exec 'cc1': execvp: 没有那个文件或目录
     <= sudo apt-get update sudo apt-get install --reinstall build-essential
    dubbo官方文档:dubbo.apache.org/zh-cn/docs/user/quick-start.html
    linux netcat(nc) 与ncat的关系: netcat的改进工具 Ncat
    #install libglib
    #sudo apt install libglib2.0-dev
    #get include dir
    #pkg-config --cflags glib-2.0
    #-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
    #get lib path
    #pkg-config --libs glib-2.0
    #-lglib-2.0
    #ldconfig -p | grep libglib-2.0
    #       libglib-2.0.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
    #       libglib-2.0.so.0 (libc6) => /usr/lib/i386-linux-gnu/libglib-2.0.so.0
    #       libglib-2.0.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libglib-2.0.so
    #gcc --print-search-dirs
1. 解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
2. 统计当前目录下的.c文件的行数:   find . -name "*.c" -type f -exec wc -l {} \; | awk  '{count+=$1} END{print count}'
3. Linux系统下如何产生随机数
        srand((unsigned)time(NULL)); //用于保证是随机数
            s->acceleration.v[0] = (rand()%1)*(rand()%10);
            s->acceleration.v[1] = (rand()%1)*(rand()%10);
            s->acceleration.v[2] = (rand()%1)*(rand()%10);
    struct timeval tpstart;
    gettimeofday(&tpstart,NULL);
    srand(tpstart.tv_usec);
    1+(int) (100.0*rand()/(RAND_MAX+1.0));
    RAND_MAX是系统的一个宏。
    查看服务列表代码
        sudo service --status-all
        sudo initctl list

在ubuntu16.04系统下获取glibc的版本号

    1. getconf GNU_LIBC_VERSION
        neo@neo:~$ getconf GNU_LIBC_VERSION
        glibc 2.27
    2. man -k libc
        neo@neo:~$ man -k libc
        cracklib-check (8)   - Check passwords using libcrack2
        create-cracklib-dict (8) - Check passwords using libcrack2
        error (3)            - glibc error reporting functions
        error_at_line (3)    - glibc error reporting functions
        error_message_count (3) - glibc error reporting functions
        error_one_per_line (3) - glibc error reporting functions
        error_print_progname (3) - glibc error reporting functions
        glibc (7)            - overview of standard C libraries on Linux
        gnu_get_libc_release (3) - get glibc version and release
        gnu_get_libc_version (3) - get glibc version and release
        libc (7)             - overview of standard C libraries on Linux
        XkbGetXlibControls (3) - Determines the current state of the Library Controls
        XkbSetXlibControls (3) - Changes the state of the Library Controls
        使用 gnu_get_libc_version/gnu_get_libc_release()可以获取
    3. ldd your_exec_file
        your_exec_file call glibc functions
6. DEVICE /dev/ttyUSB0 Locked.
   sudo rm -rf /var/lock/LL*

9 usb_uevent:

    sent uevent USB_STATE=CONNECTED

联网脚本wifi-conn.sh

#! /bin/sh
if [ $# != 2 ]; then
    echo "./wifi-conn.sh \"username\" \"passwd\""
    exit;
fi
ifconfig wlan0 down
ifconfig wlan0 up
ifconfig lo up
cat > /data/wpa_supplicant.config << EOF
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="$1"
psk="$2"
}
EOF


# if wpa udhcpc exist kill them.
wpapid=`ps aux | grep "wpa_supplicant" | grep -v grep | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$wpapid" ]; then
        echo "wpapid($wpapid)"
else
        kill -9 $wpapid
        echo "wpapid($wpapid) was killed"
fi
udhcpcpid=`ps aux | grep "udhcpc" | grep -v grep | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$udhcpcpid" ]; then
        echo "udhcpcpid($udhcpcpid)"
else
        kill -9 $udhcpcpid
        echo "udhcpcpid($udhcpcpid) was killed"
fi
/usr/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/wpa_supplicant.config -B
/sbin/udhcpc -i wlan0 -b

10. linux中shell变量$#,$@,$0,$1,$2的含义解释:

    变量说明:
    $$     Shell本身的PID(ProcessID)
    $!     Shell最后运行的后台Process的PID
    $?     最后运行的命令的结束代码(返回值)
    $-     使用Set命令设定的Flag一览
    $*     所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $@     所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    $#     添加到Shell的参数个数
    $0     Shell本身的文件名
    $1~$n     添加到Shell的各参数值。$1是第1参数、$2是第2参数…

11. automake-1.15: 未找到命令

    sudo autoreconf -ivf

12. linux automake usage

    autoconf autoscan automake
    
    12.1 autoscan : autoscan.log configure.scan
    12.2 configure.scan => configure.in/configure.ac, then modify it : AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) AM_INIT_AUTOMAKE(FULL-PACKAGE-NAME, VERSION) AC_OUTPUT([Makefile])
    12.3 aclocal : aclocal.m4 autom4te.cache
    12.4 autoconf : configure
    12.5 autoheader : config.h.in, copy symbols link from file acconfig.h
    12.6 automake [--add-missing] : Makefile.am => Makefile.in
    12.7 "./configure","make","make install"(安装到系统路径下,个人例子需要先)
    12.8 make dist 打包为 targz
    需要修改的文件configure.ac Makefile.in
    www.cnblogs.com/bugutian/p/5560548.html

usb当作虚拟网卡或者正常使用

#! /bin/sh

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

adbdpid=`ps aux | grep "adbd" | grep -v grep | grep -v "run_adbd" | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$adbdpid" ]; then
        echo "no adbd"
        echo $adbdpid
        echo "no adbd"
else
        echo "$adbdpid was killed"
        kill -9 $adbdpid
fi

if [ "$1" == "mass_storage" ]; then
    echo "usb mass storage"
    
    echo 0 > /sys/class/android_usb/android0/enable
    
    echo Routon > /sys/class/android_usb/android0/iManufacturer
        echo S1801 > /sys/class/android_usb/android0/iProduct

    echo 239 > /sys/class/android_usb/android0/bDeviceClass
    echo 2 > /sys/class/android_usb/android0/bDeviceSubClass
    echo 1 > /sys/class/android_usb/android0/bDeviceProtocol
        
        echo 2206 > /sys/class/android_usb/android0/idVendor
        echo 1985 > /sys/class/android_usb/android0/idProduct
    echo mass_storage > /sys/class/android_usb/android0/functions
    
#    echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun/ro
    echo /dev/ums > /sys/class/android_usb/android0/f_mass_storage/lun/file
    
    echo 1 > /sys/class/android_usb/android0/enable

elif [ "$1" == "mtp" ]; then
        echo "mtp"

        echo Routon > /sys/class/android_usb/android0/iManufacturer
        echo S1801 > /sys/class/android_usb/android0/iProduct

        echo 0 > /sys/class/android_usb/android0/enable
        
        echo 2206 > /sys/class/android_usb/android0/idVendor
        echo 1985 > /sys/class/android_usb/android0/idProduct
    echo mtp > /sys/class/android_usb/android0/functions
    
    echo 1 > /sys/class/android_usb/android0/enable
    
elif [ "$1" == "network" ]; then
        echo "adb connect by network"

        echo RockChip > /sys/class/android_usb/android0/iManufacturer
        echo RV1108 > /sys/class/android_usb/android0/iProduct

        if [ "$usbmode" == "USBMODE" ];then
                umount /dev/usb-ffs/adb
        fi

        echo 0 > /sys/class/android_usb/android0/enable
        echo "" > /sys/class/android_usb/android0/f_ffs/aliases
        echo 2207 > /sys/class/android_usb/android0/idVendor
        echo 2910 > /sys/class/android_usb/android0/idProduct
        echo "" > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable

    /usr/local/sbin/adbd &

elif [ "$1" == "rndis" ]; then
    pkill adbd
    pkill dnsmasq

    echo "rndis"
    echo RockChip > /sys/class/android_usb/android0/iManufacturer
    echo RV1108 > /sys/class/android_usb/android0/iProduct

    if [ "$usbmode" == "USBMODE" ];then
                umount /dev/usb-ffs/adb
        fi

        mkdir -p /dev/usb-ffs/adb
        mount -t functionfs adb /dev/usb-ffs/adb

        echo 0 > /sys/class/android_usb/android0/enable
        echo "" > /sys/class/android_usb/android0/f_ffs/aliases
        echo 2207 > /sys/class/android_usb/android0/idVendor
        echo 0003 > /sys/class/android_usb/android0/idProduct
        echo rndis > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/f_rndis/wceis
        echo 224 > /sys/class/android_usb/android0/bDeviceClass
        echo 1 > /sys/class/android_usb/android0/enable

        usbmode="RNDIS"

        str=`cat /proc/cpuinfo | grep Serial | awk -F : '{print $2}'`
        suffix=${str:1:2}:${str:3:2}:${str:5:2}:${str:7:2}
        macaddr=22:1D:$suffix
        ifconfig rndis0 hw ether $macaddr
    
        ifconfig rndis0 192.168.60.1 netmask 255.255.255.0 up
    
        #route add default gw 192.168.60.1
        dnsmasq --resolv-file=/etc/resolv.conf --no-poll --dhcp-range=192.168.60.2,192.168.60.254,1h --dhcp-range=192.168.43.2,192.168.43.254,1h --listen-address=192.168.60.1,192.168.43.1
else
        echo "adb-connect will use usbmode"

        echo RockChip > /sys/class/android_usb/android0/iManufacturer
        echo RV1108 > /sys/class/android_usb/android0/iProduct

        mkdir -p /dev/usb-ffs/adb
        mount -t functionfs adb /dev/usb-ffs/adb

        echo 0 > /sys/class/android_usb/android0/enable
        echo adb > /sys/class/android_usb/android0/f_ffs/aliases
        echo 2207 > /sys/class/android_usb/android0/idVendor
        echo 0006 > /sys/class/android_usb/android0/idProduct
        echo adb > /sys/class/android_usb/android0/functions
        echo 1 > /sys/class/android_usb/android0/enable
        
        usbmode="USBMODE"
        
        /usr/local/sbin/adbd &
fi
#while true; do
#       server=`ps aux | grep adbd | grep -v grep`
#       if [ ! "$server" ]; then
#               /usr/local/sbin/adbd  &
#               echo "run adbd"
#               sleep 1
#       fi
#       sleep 1
#done
#server=`ps aux | grep adbd | grep -v grep`
#if [ ! "$server" ]; then
#       /usr/local/sbin/adbd  &
#       echo "run adbd"
#fi

#/usr/local/sbin/adbd &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值