shell/makefile
SoulNov23
那些我们说着永远不分离的朋友,早已散落在天涯,时光的洪流中,我们总会长大。
展开
-
Inferior 1 (process xxx) exited with code 0177
今天调试的时候遇到个很奇怪的问题,我的服务是多进程的,每次收到请求子进程就退出了,然后又重新被父进程拉起一个新的子进程,看了下core目录也没有生成core文件。通过日志看到当前执行到了哪里,在后面调用和return位置加打印TODO,再次调试,发现是在调用一个函数的时候直接退出了,并且都没有进入到函数里面去。通过ps -ef查看子进程的pid,然后gdb -p到子进程上,打断点,再次调试(gdb) b xxx.cpp:26No source file named xxx.cpp.Make b原创 2021-12-21 17:00:05 · 3313 阅读 · 2 评论 -
makefile常用编译选项
我们习惯创建一个环境变量文件Inc.mk来定义常用的变量CC = gccCXX = g++ -std=c++11AR ?= arARFLAGS = -scurvRANLIB ?= ranlibCFLAGS ?=CXXFLAGS ?=INCLUDE ?=LDFLAGS ?=CFLAGS += -Wall -g -fPIC -pipe -Wl,-z -Wl,defs -...原创 2019-03-27 20:36:37 · 7261 阅读 · 0 评论 -
curl常用功能
最简单的get访问(-X GET可选):curl www.test.com使用用户名和密码:curl -u name:passwd http://www.test.com查看详细访问过程:curl -v www.test.compost访问(因为-d就指定了post,可以省略-X POST):curl -d "user=kevinchuang&passw...原创 2018-11-03 20:05:41 · 579 阅读 · 0 评论 -
ntpdate同步时间
先说下ntpdate的用法: usage: ntpdate [option] server大概就是ntpdate 192.168.0.1这样 最近发现个问题,当强制把本机时间改大了一个月之后,再使用ntpdate向主机同步时间会报错:ntpdate[8115]: Can't adjust the time of day: Invalid argument这个时候只需要增加-...原创 2018-04-02 16:36:08 · 1089 阅读 · 0 评论 -
shell脚本打印日志
#!/bin/bashLOG_FILE="/var/log/test.log">"${LOG_FILE}"exec &>>${LOG_FILE}set -x第一行是定义日志绝对路径 第二行是先清空日志文件内容 第三行是把当前脚本的标准输出,标准错误输出都重定向到文件LOG_FILE中 第四行是打印每一行shell命令执行 exec是用被执行的命令行替...原创 2018-03-05 16:31:31 · 13861 阅读 · 0 评论 -
docker run --rm
先引用docker run命令的帮助文档原文: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…] Run a command in a new container –rm Automatically remove the container when it exits 意思就是退出容器的时候容器就被删除了 现在有这样一个场景,我们想查...原创 2018-03-05 14:55:45 · 3695 阅读 · 0 评论 -
linux查看.so导出函数
方法一 nm -D *.so 方法二 objdump -tT *.so原创 2017-11-18 15:19:58 · 5163 阅读 · 0 评论 -
2>/dev/null和>/dev/null 2>&1和2>&1 >/dev/null
标准输入0 从键盘获得输入 /proc/self/fd/0 标准输出1 输出到屏幕(即控制台) /proc/self/fd/1 错误输出2 输出到屏幕(即控制台) /proc/self/fd/2 /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞” 1. 2>/dev/null意思就是把错误输出到“黑洞” 2. > /dev/n原创 2017-10-27 14:38:17 · 1220 阅读 · 0 评论 -
source命令的巧用
首先,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source /etc/profile。 其次,source filepath或者. filepath,sh filepath或者./filepath区别: 1. sh filepath会重新建立一个子she原创 2017-10-27 12:25:06 · 1599 阅读 · 0 评论 -
linux c使用system调用shell脚本
system的原理其实就是调用fork创建子进程去执行shell命令,然后返回最后一条shell命令的状态值。linux下man system可以看到返回值说明: 1.如果返回值等于-1就是system函数执行失败,准确的说是fork创建子进程失败。 2.shell执行最后一条语句的状态值放在返回值的低8位,使用WEXITSTATUS宏可以获得状态值。 3.使用WIFEXITED宏取返回值判断原创 2017-08-05 12:48:47 · 6460 阅读 · 0 评论 -
docker registry带ssl认证的私有仓库搭建
1.首先docker pull registry默认下载最新版的镜像,我这边是2.6.2版本 2.这边考虑私有仓库部署的服务器可能没有网络,可以使用docker save -o registry.tar registry:2.6.2保存一个镜像,然后把registry.tar打包到部署包里面,下次使用docker load -i registry.tar加载到本地镜像 3.保证ssl已安装,且/原创 2017-08-11 19:42:41 · 4021 阅读 · 0 评论 -
protobuf使用方法
#!/bin/shSRC_DIR=./protocolDST_DIR=./cpp#C++protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/*.proto这是编译*.proto文件的脚本 这里我们用proto_class代替*.proto文件中的类结构 1.解析问题 char *str_buffer = new char[length]; pr原创 2016-10-10 09:54:22 · 3059 阅读 · 0 评论 -
linux环境变量LD_LIBRARY_PATH
在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再依次启动用户目录下的 ~/.bash_profile、 ~/.bash_login、~/.profile文件。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:if [ -f ~/.ba原创 2016-11-24 20:49:47 · 1236 阅读 · 0 评论