文件/文件夹/磁盘管理
- 由第一行开始显示档案内容(n为显示行号):
cat [-n] <file-name>
- 从最后一行开始显示(Mac无):
tac <file-name>
- 查看头几行:
head [-lineNumber] <file-name>
- 查看尾几行:
tail [-lineNumber] <file-name>
- 以二进制的方式读取档案内容:
od <file-name>
- 分页显示文件(space下一页,b上一页):
more <file-name>
- 分页显示文件(支持PageDown和PageUp):
less <file-name>
- 创建软链接(inode不一样):
ln -s <from-file-with-absolute-path> <soft-link-file-with-absolute-path>
- 创建硬链接(inode一样):
ln <from-file-with-absolute-path> <hard-link-file-with-absolute-path>
- 查看文件的inode信息:
stat <file>
- 查看硬盘分区的inode总数和已经使用的数量:
df -i
- 查看每个inode节点的大小:
sudo dumpe2fs -h /dev/hda | grep "Inode size"
- 查看文件的inode号码:
ls -i <file>
- 查看当前文件夹磁盘占用情况:
du -shc *
- 查看磁盘使用情况:
df -lh
- 查看文件或文件夹挂载在哪个分区:
df <file-or-directory> -kh
- 查看inode使用情况:
df -hi
- 找某个文件并打印内容:
find . -name "<file-name>" -exec cat {} \;
- 在当前目录下查找某个字符串并打印行号:
find ./* | xargs grep -n '<string-you-find>'
压缩文件管理
- 创建tar文件:
tar -cvf <archive-name.tar> <file1-OR-file2-OR-both-to-archive>
- 查看tar文件:
tar -tvf <archive-to-view.tar>
- 提取tar文件:
tar -xvf <archive-to-extract.tar>
- 创建和提取gzip压缩文件:
gzip <filename>
- 对gzip文档进行解压:
unzip <archive-to-extract.zip>
- 查看gzip文件:
unzip -l <archive-to-extract.zip>
计划任务
- 启动crond服务:
service crond start
- 停止crond服务:
service crond stop
- 重启crond服务:
service crond restart
- 为某个使用者建立/移除crontab任务:
crontab -u username
- 编辑crontab任务内容:
crontab -e
- 查看crontab任务内容:
crontab -l
- 移除crontab所有任务:
crontab -r
- crontab内容格式:
* * * * * path
- 前面5个
*
代表:分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7) *
号代表任何时间都能接受的意思,任意;- 如果是一段时间,用
-
连接 - 如果是隔开几个时间,用
,
连接 - 如果是某个时间单位每隔多久,用
/<interval>
连接
- 例如:
* */12 * * * /Users/Archerda/Configuration/Script/CodingBit/coding.sh
代表每隔12个小时执行一次coding.sh - Mac下的cron日志会在
/var/mail/<username>
中记录,可以用cat查看。每次cron任务有标准输出时都会记录在该文件中,并且在终端会提醒You have new mail in /var/mail/<username>
用户管理
- 列出当前用户名:
who
- 查看用户登录状态:
w
- 快速查找某用户信息:
finger <user-name>
- 切换用户(switch user):
su <user-name>
- 修改用户密码:
passwd
- 查看UID等:
id <user-name>
系统相关
- 显示系统内核信息:
uname -a
- 显示发行版信息:
cat /etc/issue
- 查看文件系统块大小:
blockdev --getbsz <partion>
比如blockdev --getbsz /dev/sda1
进程管理
- 查看系统资源使用情况并排序:
top
- 可视化查看系统资源使用情况:
sudo htop
- 使用homebrew安装htop:
brew intall htop
- 列出活跃进程:
ps
- 列出所有系统运行命令并分页:
ps -A | less
- 列出指定进程名的进程(BSD格式输出:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND):
ps aux | grep <pname> --color=auto
- 列出指定进程名的进程(标准格式输出:UID , PID , PPID , C , STIME , TTY , TIME , CMD):
ps -ef | grep <pname> --color=auto
- 根据ID杀死进程:
kill <pid>
- 根据关键字查询PID:
pgrep -f <key-word>
- 根据进程名称杀死一个进程:
pkill <name>
killall <name>
- 杀死图形界面程序(Mac默认没有这个工具):
xkill
- 改变线程nice值(优先级,-19最高,19最低,0默认):
renice <nice-value> <pid>
- 在后台不挂断地运行命令(日志默认写在当前目录的nohup.out):
nohup <command> <arg> [> <filename> 2>&1] &
- 建立一个处于断开模式下的会话:
screen -dmS <session-name>
- 列出所有会话:
screen -list
- 重新连接会话:
screen -r <session-name>
- 跟踪进程执行时的系统调用和所接收的信号 (在调试的时候一般是从后往前看strace命令的结果,这样更容易找到有价值的信息):
strace <command>
- Linux查看PID的详细信息:
ll /proc/<PID>
- cwd符号链接的是进程运行目录;
- exe符号连接就是执行程序的绝对路径;
- cmdline就是程序运行时输入的命令行命令;
- environ记录了进程运行时的环境变量;
加密解密
- 查看文件的MD5(Mac):
md5 <file-name>
- 查看文件的SHA1(Mac):
shasum -a 1 <file-name>
- 查看文件的SHA256(Mac):
shasum -a 256 <file-name>
- 查看文件的MD5(Linux):
md5sum <file-name>
- 查看文件的SHA:
shasum <file-name>
- 查看文件的SHA1:
sha1sum <file-name>
- 生成RSA的SSH:
ssh-keygen -t rsa
重定向
- 输出重定向到剪贴板(Mac):
<command> | pbcopy
远程登录
- ssh登录:
ssh [-p <port>] <user>@<host>'
- ssh免密码登录(公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾):
ssh <user>@<host> 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
- ssh禁用密码登录并启用ssh密钥登录:
vim /etc/ssh/sshd_config
PubkeyAuthentication yes;AuthorizedKeysFile .ssh/authorized_keys;PasswordAuthentication no
service sshd restart
CPU管理
- 显示CPU信息:
cat /proc/cpuinfo
- 显示CPU信息:
lscpu
- 显示CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
内存管理
- 显示内存信息:
free -m
- 显示内存信息:
cat /proc/meminfo
- 查看内存页大小:
getconf PAGESIZE
- 查看swap的使用情况:
cat /proc/swaps
- 显示内存消耗最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
- 显示虚拟内存使用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
- 释放buffer和cache:
echo 3 > /proc/sys/vm/drop_caches
- 每隔一秒高亮显示内存变化情况:
watch -n 1 -d "free"
网络管理
- 查看已用端口:
netstat -pltn
- 查看某个端口被哪个进程占用:
lsof -i:<port>
- 显示机器所属域名:
hostname -d
- 显示完整的主机名和域名:
hostname –f
- 显示当前机器的ip地址:
hostname –i
- 互动式地查询域名记录:
nslookup
- 查询域名对应的IP:
dig <domain-name>
- 查询IP对应的域名:
dig -x <ip>
- 查看网络是否联通:
ping <ip|domain-name>
- 查看公网IP:
curl http://members.3322.org/dyndns/getip
- 每隔一秒高亮显示网络链接数:
watch -n 1 -d "netstat -ant"
- 查看一下当前的网络连接情况:
netstat -nt | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
- telnet:
telnet <ip> <port>
- 查看iptables防火墙状态:
service iptables status
- 立即开启iptables防火墙:
service iptables start
- 重启后开启iptables防火墙:
chkconfig iptables on
- 立即关闭iptables防火墙:
service iptables stop
- 重启后关闭iptables防火墙:
chkconfig iptables off
- 立即重启iptables防火墙:
service iptables restart
快捷键
- 光标回到行首:
ctrl + a(ahead)
- 光标回到行尾:
ctrl + e(end)
- 光标向行首移动一个字符:
ctrl + b(backwards)
- 光标向行尾移动一个字符:
ctrl + f(forwards)
- 删除光标到行首的字符:
ctrl + w
- 删除光标到行尾的字符:
ctrl + k
- 删除整个命令行文本字符:
ctrl + u
- 向行首删除一个字符:
ctrl + h
- 向行尾删除一个字符:
ctrl + d
- 粘贴ctrl+u,ctrl+k,ctrl+w删除的字符:
ctrl + y
- 上一个使用的历史命令:
ctrl + p
- 下一个使用的历史命令:
ctrl + n
- 快速检索历史命令:
ctrl + r
- 交换光标所在和其前的字符:
ctrl + t
- 使终端静止,停止输出:
ctrl + s
- 退出ctrl+q引起的静止:
ctrl + q
- 使正在运行的任务运行于后台:
ctrl + z
- 空命令行状态下退出终端:
ctrl + d
- 显示所有终端支持的命令:
esc + esc + esc