shell命令优先查找顺序:
./
/usr/local/bin
/usr/bin
/bin
/sbin
恢复模式:开机时按cms+R
ps / kill: (ps快速参考)
ps -e
show all process by PID | TTY name/command
ps -ax : list all processes with a tty(x) 查看哪些tty在运行
ps -au list user information
ps -eLF 显示所有线程(上述方法不显示有些线程)
kill [signal, -9/-SIGKILL by default] pid
kill by pid
pkill [-g pgrep ] name kill process by name
killall name kill processed by name
renice:
调整优先级PRI,renice将一个offset加到PRI上,
PRI越小则优先级越高。
who: 查看活跃用户名|tty名|登录ip
sshd:
xos中,须修改 etc/ssh/sshd_config, 声明好密钥、协议、安全、连接数等。再将公钥添加到.ssh/known_hosts
否则每次都要新生成所有key,然后添加已知hosts
必须全名调用
sudo -u root ‘cp xxx yyy’ 以root身份执行字符串命令
mount: 查看磁盘挂载到哪里
top:进程占用资源监控
htop:top高级版
iotop:带磁盘读写监控的top
iostat:专门监控磁盘读写
vmstat:虚拟内存用量存量
isof:is_opened_file 列出所有被打开的文件资源
tcpdump:监控TCP/IP包
netstat:监控TCP/IP连接
netstat -tlunp | grep port 端口被谁占用
tulnp:(tcp udp listen numeric program)
iftop/nethogs:监控程序的网络吞吐
psacct/acct:监控其他用户
suricata:网络安全软件,OISF开源网络安全基金会开发
ext3grep: rm * 恢复命令 mysql binlog
write username tty 发送给user消息 crtl+D 或 ctrl+C 结束
wall : write to all users on server
rwall : write to all users on network [danger!]
talk [user]: live chat with [user]
lsb_release 查看发行版名称
lspci
lscpu
Ctrl+Shift+C=复制,Ctrl+Shift+V=粘贴
编辑当前行的命令:
- ctrl-w删除当前命令的一个单词,
- ctrl-u删除到行首,ctrl-k删除行尾,
- ctrl-a移动到行首,ctrl-e移动到行尾
- ctrl-x ctrl-e 可以调用自己定义的编辑器来编辑当前命令行
控制任务前后台
jobs 查看后台任务编号
ctrl z 将任务暂停,回到bash
fg $no 将no号任务放到前台
bg $no 放到后台
disown $no 将任务与session脱钩,关闭term后不会结束任务
nohup 后台执行,不与term挂钩.
系统CPU 网络 硬盘监控:blog
file 命令判断so文件x64/32位数
free -m 查看内存 MB单位 或者直接看文件: /proc/meminfo
$1
$@ param list Self_name Excluded
$* param string Self_name Excluded
$# param number Self_name Excluded
$? last return value
-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.
bad interpreter 错误:由于windows文件上传到linux上导致的,在vim中: set ff=unix 然后保存即可解决。
重定向:0 input 1 output 2 err . echo ’sdf’>&1
#> . script.sh 相当于 source script.sh
“str1”=="str2"
init run-level: 0. halt
single user
multi user
multi user with networking
-
level 3 with GUI
reboot
shell 判断条件:https://linuxacademy.com/blog/linux/conditions-in-bash-scripting-if-statements/
http://www.comptechdoc.org/os/linux/programming/script/linux_pgscripttest.html
- Ctrl+A or Home: Go to the beginning of the line.
- Ctrl+E or End: Go to the end of the line.
- Alt+B: Go left (back) one word.
- Ctrl+B: Go left (back) one character.
- Alt+F: Go right (forward) one word.
- Ctrl+F: Go right (forward) one character.
- Ctrl+XX: Move between the beginning of the line and the current position of the cursor. This allows you to press Ctrl+XX to return to the start of the line, change something, and then press Ctrl+XX to go back to your original cursor position. To use this shortcut, hold the Ctrl key and tap the X key twice.
更多
多行复制:9,15 copy 16 或 :9,15 co 16
执行shell命令: :!command :!bash
undo: u
?向上查找
/字符串 全文查找,再输入/向下查找
:colorschem darkblue/delek/elflord /usr/share/vim/vim72/colors/有各类配色方案名
配置放在.vimrc里
set hlsearch (high light search results)
:noh 清除上次搜索的highlight
选择:v,选整行:V,Ctrl+v 矩形选取
Cut(del):d Copy:y Paste:P/p 光标前/后插入
Ctrl+N 自动E补全
make all VAR=value 可以直接向Makefile中定义变量,$(VAR)使用
makefile 中,命令前加@符号,可不打印此命令本身,精简输出。
ar rcs fname *.o
ranlib 更新Lib符号表
编译选项 amd64 fPIC
strings 从二进制程序中查找字符串
nm 列出二进制文件的符号表(一般用于c语言库)
c++filt: c++和java编译时会给符号加Namespace和其他修饰,并二进制化符号名。该程序可将其解码,使其可读。
汇编语言编译器: nasm 和 as 或 gas。
nasm -f elf hello.asm
ld -m elf_i386 -s -o hello hello.o 链接器会按文件列出的顺序排列代码. -arch i386
普通的ld选项生成代码会从大致7kb位置编码非常讨厌,可以用 -r (merge objs only)让从0开始编码。如下
ld -static -r a.o b.o -o c.o
ld 的strip(精简header)功能被各种不支持了,sb么?
mac 反汇编 otool -tVj (j:print opcode)
gcc -m32(32bit) -o(out name) -c(obj,Don;t link)
MACOS下,若不指明目标平台,则全编译成Mac-O object格式,必须如下指定 target参数
cc -m32 add.c -c -O0 -target i386 生成elf格式
cc -m32 add.c -c -O0 -arch i386 不好使,生成mac-o格式
GNU-binutils有各种看二进制文件的工具比如:
readelf
ar
objdump
MacOS上支持ELF的linux交叉编译器: [项目网址]
rz 上传 escape binary y(overwrite)
sz 下载
ssh: -qNfD local_port remote_addr
-D bind ssh with local socket port
-q quiet mode
-n direct stdin to /dev/null
-N not exe any command
-f background
UNIX BASICS : https://www.cs.jhu.edu/~joanne/unix.html 常用命令,快捷键。
find 命令:http://bbs.linuxtone.org/thread-1696-1-1.html
在目录中查找文件内容:
find ./ -xtype f -exec grep -in 'passwd' {} \;
让grep显示文件名:find ./ -xtype f -exec grep -Hin 'passwd' {} \;
grep 'abc.*def'
判断系统类型 http://unix.stackexchange.com/questions/35183/how-do-i-identify-which-linux-distro-is-running
判断是否在screen里: $TERM 变量
判断是否在ssh里:查找 SSH_CLIENT or SSH_TTY is defined
python:
py2 py3 区别:commands->subprocess
osx linux 区别:osx-> bytes=str linux->bytes=bytes(str,encoding)
get_attr() 可根据名字获得包内对象
__import__(pkg ,fromlist=[‘xxx'])
该方法是为实现import语句而开发的。
当 fromlist 非空,模拟 from pkg import fromlist 返回pkg的最右包,
因为import 语法要从最右包中逐个提取fromlist,在上下文中生成fromlist变量。
当 fromlist 为空,模拟 import pkg,直接返回pkg最左包
因为若你 import a.b.c ,调用时仍需全称a.b.c,所以仅将最左包添加进来即可。
用pydoc.locate() 能很好地达到(4)的效果,locate依赖safeimport()
@classmethod 静态函数,访问静态成员变量
@staticmethod 固态函数,仅借用类路径,不能访问类内成员
request库很好用:www.python-requests.org
找包的安装位置: python -c "import numpy; print numpy.__file__"
(当前目录名,当前目录下文件夹列表,当前目录文件列表)=os.walk()
glob.glob( path + os.sep + '*’ ) 通配符
判断是否目录 os.path.isdir()
查看当前变量:dir() locals() globals()
远端仓库如果用git init建造,则会因为working tree有东西,而拒绝push
强制更新他需要修改.git/config. 加入:
[receive]
denyCurrentBranch = ignore
用git init - - bare 建造,则不会有此问题,因为bare库没有working dir,只有一个.git隐藏库
查看修改的message时间线: git log
文件修改历史 git log fname
文件修改diff历史 git log -p fname
查看文件差异 git diff:
add暂存之前:git diff [fname]
add之后:git diff --cached [fname]
commit之间:git diff ffd09:fname ffd10:fname
get some files from other branch:
git checkout other_branch file1 file2 file3
show tree like branches: git log —graph —decorate —oneline
fetch handful files from remote:
git fetch
git checkout origin/master - - file1 file2 file3
git add -u : update tracked index according to working tree files not tracked will be ignored.
merge:
strategy:
when X Y have unique ancestor, do three way merge.
Otherwise, merge the ancestors A1 A2 Ax.. first, or recursively so.