博客地址:http://home.cnblogs.com/u/zengjianrong/

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 可以用 ’\r‘或‘\015'代替;
查看未挂载的设备的文件类型
  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;
posted @ 2020-02-13 18:53  black_man  阅读(326)  评论(0编辑  收藏  举报