1. linux 中文乱码
设置iterm2终端的profiles-Edit profiles-terminals-GBK
2. 经常 ssh 掉线
在home路径vim .bash_profile 中添加export TMOUT=0
3. 磁盘已满
vi编辑某文件,保存时报错,提示:E514: write error (file system full?)写入错误,磁盘满了。
查看磁盘空间:df -h
根目录磁盘空间已满,used%100。
清理文件,释放空间后,再次编辑文件,保存正常。
du用来查看文件或目录所占用的磁盘空间的大小。
du -a:使用此选项时,显示目录和目录下子目录和文件占用磁盘空间的大小。
du -s:使用此选项时,du只显示目录所占用磁盘空间的大小,而不显示其下子目录和文件占用磁盘空间的信息。
du -sh:查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -lh --max-depth=1:查看当前目录下一级子文件和子目录占用的磁盘容量。
4. 目录切换
参考
用cd -和cd $OLDPWD都可以在最近所操作的两个目录之间进行切换。
pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中。
如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换。
pushd +n:n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部。堆栈从第0个开始数起。
popd:弹出堆栈中最近的目录dirs: 列出当前堆栈中保存的目录列表。
pushd 和 popd 都可以只影响堆栈而不切换目录用 -n 参数即可。
5. 查找命令
find path -name filename
find . -name filename
grep -nr ‘targetname’ --color=auto path
grep -nr ‘targetname’ --color=auto .
nm filename | grep targetname -B5
nm main.c | grep main -B5
nm --help
cat log/ads_server.log | grep -C5 ‘tag’
-C 上下,-B后,-A前
6. 显示端口
netstat -a 列出所有端口
netstat -at 列出所有tcp端口
netstat -au 列出所有udp端口
列出所有处于监听状态的 Sockets
netstat -l 只显示监听端口
netstat -lt 只列出所有监听 tcp 端口
netstat -lu 只列出所有监听 udp 端口
netstat -lx 只列出所有监听 UNIX 端口
1024以下系统,1024到65535我们编程可以用。这个不是Linux规定的,是socket规定的。
port的取值范围是 0 - 65535(即2的16次方),0到1024是众所周知的端口(知名端口,常用于系统服务等,例如http服务的端口号是80)。个人写的应用程序,尽量不要使用0到1024之间的端口
7. 进程
挂起进程 ctrl+z
查看进程号 ps -ef | grep vim
杀死进程号为2301的进程 kill -9 2301
ps -ef | grep 进程号 或者 kill -9 进程
8. 查看虚拟内存 free -g
top -p pid
查看oom-score
cat /proc/32516/oom_score 显示15-16
9. 后台执行命令
- 用户直接退出开发机,退至跳板机,因此程序被kill,可能原因:通过终端显示,在开发机跳板机和本地电脑之间通信过于频繁。
尝试在后台运行,然后看是否用户退出时,所有后台程序是否依然在运行。
后台执行命令 nohup command &
程序输出到 nohup.out - 另外指定了输出文件:nohup command > myout.file 2>&1 &
2>&1解析
command > out.file 2>&1 &
command > out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出。
查看输出 less nohup.out,:G 跳至文件末尾
10. 进程操作
ctrl+z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
ctrl+c 终止前台命令。
jobs 查看当前有多少在后台运行的命令。
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。
11. fg bg区别
ps 列出系统中正在运行的进程;
kill 发送信号给一个或多个进程(经常用来杀死一个进程);
jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;
bg 将进程搬到后台运行(Background);
fg 将进程搬到前台运行(Foreground);
将job转移到后台运行:
如果你经常在X图形下工作,你可能有这样的经历:通过终端命令运行一个GUI程序,GUI界面出来了,但是你的终端还停留在原地,你不能在shell中继续执行其他命令了,除非将GUI程序关掉。
为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms
$xmms &
这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢;但万一你运行程序时忘记使用“&”了,又不想重新执行;你可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。
12. 文件转码
iconv -f GBK -t UTF-8 file1 -o file2
UTF8 GBK 介绍
https://blog.csdn.net/u010821666/article/details/78611504
https://zhidao.baidu.com/question/133119038.html
13. Git 基础
git clone 克隆整个代码库,不同分支全部克隆下来
git branch 查看当前代码分支
git checkout group3 切换到group3代码分支
git commit -m “MATEAM3-1199”
icode与卡片icafe建立联系
git commit --amend 重复对上一版本的修改,无需建立新版本发起新的审核
git push
git pull
冲突后 git rebase origin group3
git blame 查看责任人
14. Linux 中命令行的快捷键
ctrl + w —往回删除一个单词,光标放在最末尾
ctrl + k —往前删除到末尾,光标放在最前面(可以使用ctrl+a)
ctrl + u 删除光标以前的字符
ctrl + k 删除光标以后的字符
ctrl + a 移动光标至的字符头
ctrl + e 移动光标至的字符尾
ctrl + l 清屏,相当于clear。
其他ctrl:
ctrl + c 杀死当前进程。
ctrl + d 退出当前 Shell。
ctrl + r 搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
ctrl + t 交换光标位置前的两个字符
ctrl + y 粘贴或者恢复上次的删除
esc组合:
esc + d 删除光标后的一个词
esc + f 往右跳一个词
esc + b 往左跳一个词
esc + t 交换光标位置前的两个单词。
15. valgrind 相关
make出错:Error: no such instruction: `rdtscp’
机器的cpu版本太老了,导致valgrind较高版本编译失败,将valgrind版本换成3.8.0,编译成功
16. vim cscope
E262: error reading cscope connection 0
E257: cstag: tag not found
解决办法
:cs reset cscope.out
:cs kill 0
:cs add cscope.out
18. 查看文件目录大小
du -h --max-depth=1
19. Linux的perf使用
http://wiki.baidu.com/pages/viewpage.action?pageId=467215125
20. nohup 多个任务后台运行
nohup sh -c ‘./cmd2 >result2 && ./cmd1 >result1’ &
nohup sh -c ‘sh build.sh publish > publish.out 2>&1 && sh build.sh launch --no-whitelist > launch.out 2>&1’ &
21. 文件转码iconv
将文件file1转码,转后文件输出到fil2中:
iconv file1 -f GBK -t UTF-8 -o file2
22. 统计目录下代码行数
find . -name “*.cpp” |xargs cat|grep -v ^$|wc -l
23. 查看端口占用情况
netstat -ntulp | grep 47909
24. linux批量替换
sed -i "s/xbox_tablename.yacl.h/xbox_table_name.yacl.h/g" `grep xbox_tablename.yacl.h -rl . `
25. grep 多个文件后缀
grep -nr set_query_context --include=*.{cpp,h} .
26. sed截取文件行数
sed -n ‘100,200p’ filename
27. 线上机和开发机临时传数据
nc -l 7777 | tar xv
tar cv file | nc 10.77.128.112 7777
28. b2log解析方法
/usr/bin/codex -p proto_file -m message -b data_file