命令行相关
代码行的艺术: https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
解读代码: https://explainshell.com/
引号嵌套: https://stackoverflow.com/questions/24245661/unix-alias-fails-with-awk-command
关于yum
查看所有包的版本
yum --showduplicates list XXXX
查看现在直接装的版本
yum list available XXXX –showduplicates
查看已经装的内容
yum list installed| grep ya-feed-batch
装特定版本
yum install <package name>-<version info>
查看配置
- cpu:
lscpu
- mem:
free -h
- disk:
df -h
- mac:
diskutil list
diskutil info -all
更有用
- mac:
- file usage:
du -h --max-depth=1 PATH | sort -hr
- os:
hostnamectl
,lsb_release -a
添加本地用户
$ sudo adduser cdp
$ sudo passwd cdp
# 添加到组
$ sudo gpasswd -a cdp wheel
# 确认
$ sudo lid -g wheel
查看本地用户和组,打印列表
cut -d: -f1,3,4 /etc/passwd
注意:通过这个方法找不到通过sssd同步过来的用户,想查看远程(例如ldap)用id, getent
id shyao
getent passwd shyao
查看DNS信息
$ nslookup <IP>
$ nslookup <HOSTNAME>
$ cat /etc/resolv.conf
或者
$ dig -x <IP> +short
$ dig <HOSTNAME> +short
这里的nslookup/dig只反应dns的查找路径,他是不看/etc/hosts
可以通过nsswitch.conf来查看host的查看顺序,
譬如下面:先看files(etc/hosts)再看dns
$ cat /etc/nsswitch.conf | grep hosts
hosts: files dns
查看系统信息
- 查看开机信息:
dmesg
- 查看系统日志:
journalctl -x
journalctl -u <service_name>
查看线程
ps auxww
例:抓zoo的线程
ps auxww | grep zoo
查看服务端口
sudo netstat -ltnp
vim常用
- 显示行号:
set number
- 替换:
%s/shyao/usera/gc
向另一个服务器传文件
scp命令
例:把本地的key文件传给服务器的指定目录
scp syao.prod.keytab syao-dev01.ogk.ynwm.co.jp:/home/syao/
传文件夹
scp -r
例:现在需要拷贝一整个文件夹的内容
scp -r /Users/syao/Downloads/mysql-metadata-storage syao-dev01.yas.ssk.ynwm..co.jp:/home/syao/druid-0.12.0/extensions
rsync命令
rsync -avz --exclude='.git' feed-ansible-druid gw104.cyan.ygrid.cc1:~/
压缩文件
tar -zcvf xxxx.tar.gz directory
解压文件
tar -zxvf <filename>
z means (un)z̲ip.
x means ex̲tract files from the archive.
v means print the filenames v̲erbosely.
f means the following argument is a f̱ilename.
查看压缩内容
tar -tvf <filename>
更新压缩内容
tar -rvf <target> <resource path>
查看文件(单纯查看)
less + 文件名
输出错误
echo foo 2>&1
同步文件
rsync -az druid-0.12.0/ COORDINATION_SERVER:druid-0.12.0/
查找当前目录下的文件和文件夹(不会查子目录)
ls -l |grep yum
查找指定目录下的全部文件(包含子目录)
例:全目录下找yum
sudo find / -name “yum.*”
查找指定目录下的全部文件夹(包含子目录)
find /(查找范围) -name '查找关键字' -type d
进入root模式
sudo su
查找文件中的字符串
grep -rnw '/path/to/somewhere/' -e 'pattern'
Example: grep -rnw '/home/syao/druid-0.12.0/log/' -e 'GET'
字符串高亮(highlight)
ack --passthru 'pattern1' file_name
command_here | ack --passthru 'pattern1'
查找.gz文件中的字符串
zgrep 'ERROR' XXX.log.gz | more
查找并高亮(关键在less -p)
grep a9c49cf077e96c3 server.log | less -p 'a9c49cf077e96c3'
mv同时移动多个文件至一个目录
mv a.dir b.dir c.dir index.html zz.txt -t idolaoxu
mv /path/sourcefolder/* /path/destinationfolder/
跟踪文件的更新(常用于log)
tail -f XXXX
环境变量相关(path,lib)
查看全体
printenv
查看个别变量
echo $XXX
设置个别变量
export XXX=$YYY
export PATH="$PATH:/path/to/dir"
常用的变量
PYTHONPATH
设置快捷方式
例:希望所有的python3命令使用python36
sudo ln -s /usr/bin/python3.6 /usr/bin/python3
shell相关
切换shell
chsh -s /bin/zsh
多行输入文件
- echo 不能输出多行,如果需要,那么请使用cat
- 被EOS夹着的部分默认语法和""双引号一致
- <<EOS使用时需要顶格
cat > ${rotate_job} << EOS
type=command
dependencies=XXXXX
q1=YYYYY
command=hostname
command.1=query_action --base_dir \${hql_base_dir} --file \${q1}
HCONF_tracking_id=${tid}
EOS
Mac相关(和linux的不同点汇总)
复制粘贴
pbcopy
, pbpaste
xargs替换option
和linux的-i
不同,是-I
super user
和linux的sudo su
不同,用sudo -i
即可
locate的使用
和linux的不同,用mdfind
更方便
lsof来监听端口(比netstat方便)
lsof -iTCP -sTCP:LISTEN -P -n
netstatの使い方
netstat -vanp tcp | grep 3000
※参照:https://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac
pmset 电源电池选项
pmset -g custom
sudo pmset -a sleep 0
python相关
关于导入lib
pip和brew,yum一样是用来装东西的。
pip装的东西是给python script用的。
所以.py里面有类似 from flask import Flask, request, jsonify
的语句,
直接运行 pip3 install flask
即可。
虚拟环境(pip)
# 安装
pip install virtualenv
# 新建(venv是名字)
virtualenv venv
# 激活
. ./venv/bin/activate
# 关闭
deactivate
虚拟环境(python)
# 新建(第二个venv是名字)
python -m venv venv
# 激活
. ./venv/bin/activate
# 关闭
deactivate
查看安装包的版本
/opt/python36/bin/pip3 show XXXX