文章目录
- shell去空格
- shell去注释
- shell grep 跳过一些目录
- python输出时默认换行
- mysql导出表数据
- python paramiko 远程输出多行到文件
- windows查看端口占用,并关闭对应进程:
- maven发布:
- idea 找不到包:
- 查看机器并发量:
- maven打印依赖树:
- centos6.4编译gcc8.2.0
- 编译gdb,支持TUI,支持python
- gdb python报错:
- 运行时找不到库:
- etcd启动与检查
- mysql远程登录
- go语言远程调试
- md5检测程序
- git查看地址、tag、版本信息,更新到指定版本。
- 命令行文件查看
- 日志查看统计shell命令
- more
- less
- tail
- grep
- nginx启动检查
- mysql启动关闭命令
- git回退本地未push到远程的代码。
- nc传文件
- git提交时忽略指定的文件
- centos7永久添加动态库路径
- 安装glibc后不要轻易的替换原来的,有可能会导致系统出错,这样指定一下就可以了:
- CMAKE打包:
shell去空格
我们需要除去空行,那些空行里面可能包括空格,制表符等不可见字符,可以使用如下命令:
1.grep -v ‘^\s*$’ 1.txt
2.sed ‘/^\s*$/d’ 1.txt
3.awk NF 1.txt
shell去注释
那么如果我想把代码里所有的注释都删掉呢?
就是那些以//开头的行,可能他们前面还有空格,制表符什么的。
还有麻烦一点的,多行注释,像被/* balabala */注释起来的内容,又怎么去掉呢?
1.把以//开头的行去掉:
sed -i "/^[ \t]*\/\//d" file
2.删除行末的注释//
sed -i "s/\/\/[^\"]*//" file
3.删除只有一行的注释 /* balabala*/
sed -i "s/\/\*.*\*\///" file
4.删除多行注释
/*
balabala
balabala
*/
sed -i "/^[ \t]*\/\*/,/.*\*\//d" $file
这里有个缺点,就是在printf(“//ddd”)也会被去掉;
shell grep 跳过一些目录
要在一个文件夹下面查找特定字符,如果有svn,就会有.svn目录,那么如何跳过?
可以使用
grep --exclude=“THIRD-PARTY-NOTICES” -nR a
grep --exclude-dir=“THIRD-PARTY-NOTICES” -nR a
不同发行版本可能有不同的输出。
python输出时默认换行
给print()加一个取消自动换行的end=““参数即可:print(line,end=””)
print(“test”,end=“”)
mysql导出表数据
##mysqldump -u用户名 -p 数据库名 [表名]> 导出的文件名,导出test数据库下users表数据
mysqldump -uroot -p test users > test.sql
加上-c可以导出列名:
mysqldump -uroot -c request auth_user > auth_user.sql
mysqldump --help 查看更多
python paramiko 远程输出多行到文件
可以使用EOF
组成命令:
cat << EOF > des.txt
data
EOF
即可
如:
cmd=“cat << EOF >” file_name +“\n” + data +“EOF”,执行命令即可。
windows查看端口占用,并关闭对应进程:
以管理员权限登录cmd,netstat -ano|findstr "8082",可以查看进程PID,再得到进程名关闭进程。
maven发布:
mvn clean install -Dmaven.test.skip=true,这回将包发布到代码仓库,但是如果时正式版,如果在代码仓库里有了的话就不会在次发布。
idea 找不到包:
首先检查代码仓库里是否存在对应的包,版本对不对。如果存在,查看是否依赖到,如果没有依赖到,则删除当前项目重新导入。查看设置的jetty版本是否正确。
查看机器并发量:
netstat -pnt | grep :80 | wc -l
maven打印依赖树:
mvn dependency:tree
centos6.4编译gcc8.2.0
…/configure --prefix=/usr/local/gcc-8.2.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
make && make install
编译gdb,支持TUI,支持python
…/configure --prefix=/usr/local/gdb-8.2/ --enable-tui=yes --with-python
gdb python报错:
[root@~]# gdb
Python Exception <type ‘exceptions.ImportError’> No module named gdb:
gdb: warning:
Could not load the Python gdb module from `/usr/local/gdb-8.2/share/gdb/python’.
Limited Python support is available from the _gdb module.
Suggest passing --data-directory=/path/to/gdb/data-directory.将源码目录下的文件拷贝到安装目录即可:
cp -rf /data/gdb-8.2/gdb/python/lib/gdb/* /usr/local/gdb-8.2/share/gdb/python/gdb
运行时找不到库:
将对应的目录加到LD_LIBRARY_PATH(还可以添加ldconfig寻找路径),运行时找不到头文件,将对应文件加到CPLUS_INCLUDE_PATH或者C_INCLUDE_PATH。
使用ldconfig的方法,首先要有root权限。
查看文件:/etc/ld.so.conf : include ld.so.conf.d/*.conf
指明了动态库的配置文件,也就是说会去当前目录下的ld.so.conf.d种找出所有的.conf文件来,看看这个目录下都有哪些配置文件:
也就是说,找动态库的时候,会去/usr/lib64/mysql里去找。
etcd启动与检查
启动命令:
etcd --advertise-client-urls 'http://0.0.0.0:2379,http://0.0.0.0:4001' --listen-client-urls 'http://0.0.0.0:2379,http://0.0.0.0:4001'
etcd --advertise-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001
查看etcd所有的值:
curl -s http://127.0.0.1:2379/v2/keys/?recursive=true |python -mjson.tool
也可以使用其他命令:etcd ls /;etcd get key,获得value;如果是目录的话可以用:etcd ls /key_path
mysql远程登录
mysql -h IP -P PORT -u USR -pPWD
go语言远程调试
安装dlv:https://github.com/go-delve/delve/blob/master/Documentation/installation/linux/install.md
添加调试信息,Go 1.10 及以上版本:go build -gcflags=“all=-N -l”,Go 1.9 及以下版本 go build -gcflags=“-N -l”。也有用 -ldflags=“all=-w” 或 -ldflags=“-w” 的, 这取决于使用的 Go 版本。
启动程序时调试:
dlv --listen=:2345 --headless=true --api-version=2 exec proName (进程名)
附加到已有进程:
dlv --listen=:2345 --headless=true --api-version=2 attach PID(进程ID)
jetbrains设置:
md5检测程序
md5sum proName
git查看地址、tag、版本信息,更新到指定版本。
查看工程url:
git remote -v或者是git config --get remote.origin.url
查看tag版本信息:
git tag
更新到指定版本:
git checkout +版本号
命令行文件查看
在linux中使用vi、vim去查看文件的时候会出现一些问题,特别是在查看日志的时候,如果一行过长的话会导致日志显示不全。这样的话就会遗漏一些信息,使得简单的问题变得复杂。
日志查看统计shell命令
more
https://www.runoob.com/linux/linux-comm-more.html
grep
grep -n 可以显示行号
使用grep统计
grep -i “xxx”:“xxx” ./test 查找test文件里 “xxx”:“xxx"的字符。-i忽略大小写。
grep xxx -C 5 filename 查找时显示前后五行。
有时候需要查找tar.gz里的内容,如果不解压的话,可以使用命令zgrep,zcat。
nginx启动检查
配置文件:
server {
listen 80;
server_name www.xxx.com;
access_log logPath main;
root /share/webroot/;
# To allow POST on static pages
error_page 405 =200 $uri;
}
访问的时候出现过几次问题
1.403 Forbidden :将nginx.conf开头的user nobody改为user root;
2.curl: (7) Failed connect to www.xxx.com:443; Connection refused:没有配置https的443的端口。
mysql启动关闭命令
systemctl stop mysqld #停掉MySQL
systemctl status mysqld #查看状态
systemctl start mysqld #启动mysql
git回退本地未push到远程的代码。
1.使用git log查看本地要回退的版本号
2.回退提交记录
如果要保留本地代码使用:
git reset [要回退的版本号]
如果不用保留本地代码
git reset --hard [要回退的版本号]
nc传文件
.收方(服务端)(假设IP是: XXX.XXX.XXX.XXX)
监听一个端口,把接收数据重定向(或者说保存)到文件
nc -l 8889 > recv.txt
2.发方(客户端)
请求向服务端发送文件,文件输入到这个服务端的端口
nc XXX.XXX.XXX.XXX 8889 < send.txt
git提交时忽略指定的文件
git中在提交代码的时候显示未提交的代码时可能会有其他的一些文件:例如编译时自动生成的文件,这个时候我们只需要在git项目的根目录下修改文件:.gitignore
在这个文件里添加想要忽略得文件即可
忽略指定的文件:test.html
忽略指定类型的文件:*.html
centos7永久添加动态库路径
在/etc/ld.so.conf中添加对应路径,重启。
安装glibc后不要轻易的替换原来的,有可能会导致系统出错,这样指定一下就可以了:
export LD_PRELOAD=“/opt/glibc-2.14/lib/libc-2.14.so”
CMAKE打包:
cpack -D CPACK_RPM_PACKAGE_DEBUG=1 -D CPACK_RPM_SPEC_INSTALL_POST=“/bin/true” -G RPM