本篇记录了 Linux 常用的命令和功能介绍,对于我这样的 Linux 新手特别有用。
# 查看系统当前的版本 lsb_release -a # 查看系统当前进程运行情况,CPU,内存使用情况 top # 显示整个命令行而不只是显示命令名 top - c # 根据内存资源使用大小进行排序 top - shift + m # 内存使用情况,单位为 MB free -m # 查看服务器的 CPU 使用率,内存使用,虚拟内存交换情况,IO 读写情况 vmstat # 监视系统对磁盘操作的情况 iostat # 查看系统运行多久、当前有多少的用户登录、最近的系统平均负载 uptime # 系统性能分析工具,从多方面对系统的活动进行报告 # 包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等 sar # 显示各种网络相关信息,端口占用情况 netstat -tulpn netstat -tulpn | grep 8080 # 查看操作系统时间,时区;调整时间 date > 2015年 12月 29日 星期二 22:00:02 CST cat /etc/sysconfig/clock > ZONE="Asia/Shanghai" date MMDDhhmmYYYY MM - Two digit month number DD - Two digit date hh - Two digit 24 hour system hour mm - Two digit minute YYYY - Four digit year code date 122914372015 # 查看和调整硬件时钟 hwclock --show hwclock --set --date="2015-12-29 14:36:01" --localtime # strace用于跟踪程序执行过程中的系统调用 strace -p [pid] # 比如,跟踪pid为12345的进程中所有线程的read和write系统调用,输出字符串的长度限制为1024: strace -s 1024 -f -e trace=read,write -p 12345 # tcpdump是Linux上的抓包工具,如抓取eth0网卡上的包,使用: sudo tcpdump -i eth0 # 比如,抓取80端口的HTTP报文,以文本形式展示: sudo tcpdump -i any port 80 -A # nc可以在Linux上开启TCP Server、TCP Client、UDP Server、UDP Client。 # 如在端口号12345上开启TCP Server和Client模拟TCP通信: Server: nc -l 127.0.0.1 12345 Client: nc 127.0.0.1 12345 # 在端口号12345上开启UDP Server和Client模拟TCP通信: Server: nc -ul 127.0.0.1 12345 Client: nc -u 127.0.0.1 12345 # Unix Socket通信示例: Server: nc -Ul /tmp/1.sock Client: nc -U /tmp/1.sock # lsof命令主要用法包括: # 查看端口占用进程信息,经常用于端口绑定失败时确认端口被哪个进程占用 sudo lsof -i :[port] # 查看进程打开了哪些文件或套接字 sudo lsof -p [pid] # ss命令可以用于替换netstat,ss直接读取解析/proc/net下的统计信息,相比netstat遍历/proc下的每个PID目录,速度快很多 ss -t -a 显示所有的TCP Sockets ss -u -a 显示所有的UDP Sockets ss -x src /tmp/a.sock 显示连接到/tmp/a.sock的进程 ss -o state [state TCP-STATE] 如ss -o state established显示所有建立的连接
# 每个一行,列出文件 ls -1 # 列出所有文件,包括隐藏文件 ls -a # 列举所有文件,以长列表格式(权限、所有权、大小、修改日期) ls -la # 以人类可读单元(KB、MB、GB)来展示大小的长格式列表 ls -lh # 按大小倒序排列,列出长列表 ls -ls # 按照修改时间并以长格式列出所有文件(时间早的靠前) ls -ltr
# 文件系统空间和占用情况 df -hl # 根据文件名,查找系统内的文件, find / -name mysql # 在当前目录及其子目录下查找文件名为1.txt的文件 find . -name "1.txt" # 在当前目录及其子目录下查找包含abcd字符串的文件行,经常用于搜索代码 find . -type f|xargs grep 'abcd' # 查看当前文件目录,文件大小 du -sh * # 查看隐藏文件大小 du -sch .[!.]* * # 完全开放文件的可读,可写,可执行操作 sudo chmod 777 -R /path/public # 修改文件可执行权限 chmod +x /etc/sv/dropbox/run # 创建文件链接,具体用法是:ln –s 源文件 目标文件 # –s 是创建软链接,否则为硬链接;软链接不会占用空间;两种方式,文件都是同步的 sudo ln -s /home/deploy/project/release201510190942 /opt/jetty/webapps/project # 批量删除 .svn 隐藏文件夹 find . -type d -name ".svn"|xargs rm -rf # SCP 拷贝命令 scp file root@ip:/home scp root@ip:/home/file /folder/ # SCP 拷贝带上端口号 scp -P port file root@ip:/home
# 文件压缩/解压 tar czvf filea.tar filea.sql tar zxvf filea.tar tar cvf folderb.tar folderb tar xvf folderb.tar 解压文件 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:gzip FileName ——————————————— .tar.gz 和 .tgz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName ——————————————— .bz2 解压1:bzip2 -d FileName.bz2 解压2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName ——————————————— .bz 解压1:bzip2 -d FileName.bz 解压2:bunzip2 FileName.bz 压缩:未知 ——————————————— .tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知 ——————————————— .Z 解压:uncompress FileName.Z 压缩:compress FileName .tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName ——————————————— .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName ——————————————— .rar 解压:rar x FileName.rar 压缩:rar a FileName.rar DirName
# awk按列进行处理,sed按行进行处理 # 如采用冒号分隔数据,输出第一列数据($0代表行全部列数据,$1代表第一列,$2代表第二列...) awk -F ":" '{print $1}' # 在awk的结果基础上,结合sort、uniq和head等命令可以轻松完成频率统计等功能 # 查看文件的第100行到第200行: sed -n '100,200p' log.txt # 替换字符串中的特定子串 echo "int charset=gb2312 float"|sed "s/charset=gb2312/charset=UTF-8/g" # 替换test文件每行匹配ab的部分为cd sed -i 's/ab/cd/g' test # vi 编辑,搜索,替换文件 # :%s/str1/str2/g # 用字符串 str2 替换所有出现的字符串 str1 # 例如,将单引号 ' 替换为双引号 " :%s/'/\"/g
# 查看网络配置,网卡情况 ifconfig ifconfig eth0 # 关闭或者打开 local 网络接口 ifconfig lo down ifconfig lo up # 查看运行进程,及其占用的端口,port netstat -tulpn # Telnet 登录 telnet ip
# 新增 Gitlab 登录账号 CentOS adduser git passwd git-password # 切换用户 su root
# 创建账号 test sudo adduser test passwd test test123 # 调整 test 账号的权限 visudo test ALL=(ALL:ALL) ALL # ssh 禁用 root 登录 vi /etc/ssh/sshd_config # Prevent root logins: PermitRootLogin no # Limit User Logins AllowUsers test # Run ssh on a non-standard port: Port 22 # Change to another port # 重启 ssh 服务 service sshd restart # ssh 登录 ssh -p 22 user@ip
# 生成 SSH key $ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub # memcache 清空 cache $ telnet localhost 11211 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. flush_all OK quit Connection closed by foreign host. # wget 保存静态网页至本地 # 把 Google 深度为 4 以内的所有页面,下载下来并转换成本地链接 wget -r -l4 -k http://google.com # 把 Rails Guides 镜像到本地,可以离线查看文档 wget -k -m http://guides.rubyonrails.org/v4.1.8/ # curl用于模拟HTTP请求,在终端模拟请求时常用,如最基本的用法: # 指定HTTP首部 -H选项,如-H "Host: xx.xx.xx.xx" # 指定请求方法 -X选项,如-X POST,-d指定post数据 # 显示请求详细信息,包括请求和响应首部 -v选项 # 重定向请求自动追踪 -L选项 curl http://www.bing.com # yum 离线安装已下载的文件 yum install yum-utils # yumdownloaderyumdownloader dmidecode rpm -ivh dmidecode-2.12-6.el6.x86_64.rpm
参考链接
How to install telnet in CentOS / RHEL / Scientific Linux 6.4
2015-04-10