• linux下的小问题


    启动程序查找共享库失败,解决方法:

    1. sudo vi /etc/ld.so.conf,添加对应的共享库路径; 
    2. sudo ldconfig,生效;

    查找应用程序失败,解决方法:

    1. vi ~/.bashrc,添加:export PATH=/usr/local/bin/your_bin/:$PATH;仅对当前用户的bash生效;
    2. 如是用zsh,则对应修改~/.zshrc;
    3. 如是全局生效,则对应修改/etc/profile
    4. 如果是sudo启动的,则修改/etc/sudoers文件,找到“secure_path”一行,添加对应的路径;

    去除'^M’

    1. "^M"在Linux下的输入方法 ctrl v + ctrl m
    2. find -type f | xargs sed -i 's/^M//g'     其中:^M 可以用 ’ ‘或‘15'代替;
    查看未挂载的设备的文件类型
    1. 安装parted工具
    2. 执行:parted /dev/sdx
    3. 进入了parted的命令行,执行:print list
    4. 注意:如果是fat32,mount的时候使用vfat 类型即可 
    gcc warning: 提示函数没有声明或函数类型冲突之类的
    1. 在使用的地方添加声明
    2. 否则有可能出现返回值不符合预期; 

    修改默认挂载

    1. vi /etc/fstab/

    cp参数:cp -rfvdp, d: 保存链接,p:保存权限

    sshd启动:sudo service sshd start / sudo systemctl ....

    添加用户到sudo:sudo vim /etc/sudoers   拷贝一行root,然后替换用户名

    readelf -s exe | grep symbol,可确认是否将新函数/全局变量之类的编进去

    addr2line -e exe addr

    useradd 和 adduser 区别??

    分析coredump

    1. 看到前三个堆栈是对的,第四个堆栈显示是0xffffffffffffffff,再往下就显示“Backtrace stopped: previous frame identical to this frame (corrupt stack?)”
    2. 更新了动态库之后,就可以bt看到所有堆栈了,挂死在assert()里面,而且所有的堆栈都出来了
    3. 这是个好奇怪的问题??

    追加写与非追加写

    1. 非追加写,多个线程一起写,则文件会错乱,因为每个线程的写入流程如下:
      • 锁住inode
      • 找到自己的f_ops
      • 从f_ops的地方开始写数据
      • 解锁inode
    2. 追加写,多个线程一起写,文件也不会错乱,因为每个线程的写入都是如下流程
      • 锁住inode
      • 获取i_size
      • 从i_size的位置开始写数据
      • 解锁inode

    PS:

    1. libevent安装方式:./autogen.sh && ./configure && make && sudo make install. 注意:当系统时间老于文件时间时,会使得make一直在循环;
    2. zlog安装方式:make && sudo make install.
    3. protobuf安装:同libevent;
  • 相关阅读:
    快速幂模板
    部分有关素数的题
    POJ 3624 Charm Bracelet (01背包)
    51Nod 1085 背包问题 (01背包)
    POJ 1789 Truck History (Kruskal 最小生成树)
    HDU 1996 汉诺塔VI
    HDU 2511 汉诺塔X
    HDU 2175 汉诺塔IX (递推)
    HDU 2077 汉诺塔IV (递推)
    HDU 2064 汉诺塔III (递推)
  • 原文地址:https://www.cnblogs.com/zengjianrong/p/12304675.html
Copyright © 2020-2023  润新知