作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
在博客的草稿箱里一直有一份"Linux命令"的草稿,记录了一些常用的Linux命令,用于需要的时候查询。由于是出于个人使用的目的,所以这个清单并不完整。今天整理了一下这个清单,调整了格式,并增加了一些内容。现在发布出来,以抛砖引玉。我也会在未来继续补充。希望能对Linux用户有用。
Linux相关背景可参阅系列文章
网络相关背景可参阅系列文章
下面是格式说明,你现在可以跳过,直到遇到疑问时再来查询。
$ 命令行提示符
粗体表示命令
斜体表示参数
filename, file1, file2都是文件名。有时文件名有后缀,比如file.zip
command命令名
dir文件夹名
string字符串
username用户名
groupname组名
regex正则表达式
path路径
device设备名
partition分区名
IP IP地址
domain域名
ID远程用户ID
host主机名,可以为IP地址或者域名
var变量名
value变量值
命令帮助
$man command
查询命令command的说明文档
$man -k keyword
查询关键字
$info command
更加详细的说明文档
$whatis command
简要说明
$which command
command的binary文件所在路径
$whereis command
在搜索路径中的所有command
这里只是以command (binary file) 为例。比如man还可以用于查询系统函数、配置文件等。
用户
$finger username
显示用户username的信息
$who
显示当前登陆用户
$who am I
一个有趣的用法
$write username
向用户发送信息 (用EOF结束输入)
$su
成为root用户
$sudo command
以root用户身份执行
$passwd
更改密码
SHELL (BASH)
$history
显示在当前shell下命令历史
$alias
显示所有的命令别称
$alias new_command='command'
将命令command别称为new_command
$env
显示所有的环境变量
$export var=value
设置环境变量var为value
$expr 1 + 1
计算1+1
文件系统
$du -sh dir
文件夹大小, -h 人类可读的单位, -s 只显示摘要
$find . -name filename
从当前路径开始,向下寻找文件filename
$locate string
寻找包含有string的路径
$updatedb
与find不同,locate并不是实时查找。你需要更新数据库,以获得最新信息。
$ln -s filename path
为文件filename在path位置创建软链接
$pwd
显示当前路径
$cd path
更改当前工作路径为path
$cd -
更改当前路径为之前的路径
文件
$touch filename
如果文件不存在,创建一个空白文件;如果文件存在,更新文件读取和修改时间。
$rm filename
删除文件
$cp file1 file2
复制file1为file2
$ls -l path
显示文件和文件相关信息
$mkdir dir
创建dir文件夹
$mkdir -p path
递归创建路径path上的所有文件夹
$rmdir dir
删除dir文件夹,dir必须为空文件夹。
$rm -r dir
删除dir文件夹,以及其包含的所有文件
$file filename
文件filename的类型描述
$chown username:groupname filename
更改文件的拥有用会为owner,拥有组为group
$chmod 755 filename
更改文件的权限为755: owner r+w+x, group: r+x, others: r+x
$od -c filename
以ASCII字符显示文件
文件显示
$cat filename
显示文件$cat file1 file2
连接显示file1和file2
$head -1 filename
显示文件第一行
$tail -5 filename
显示文件倒数第五行
$diff file1 file2
显示file1和file2的差别
$sort filename
对文件中的行排序,并显示
$sort -f filename
排序时,不考虑大小写
$sort -u filename
排序,并去掉重复的行
$uniq filename
显示文件filename中不重复的行 (内容相同,但不相邻的行,不算做重复)
$wc filename
统计文件中的字符、词和行数
$wc -l filename
统计文件中的行数
文本
$echo string
显示string
$echo string | cut -c5-7
截取文本的第5到第7列
$echo string | grep regex
显示包含正则表达式regex的行
$echo string | grep -o regex
显示符合正则regrex的子字符串
时间与日期
$date
当前日期时间
$date +"%Y-%m-%d_%T"
以YYYY-MM-DD_HH:MM:SS的格式显示日期时间 (格式可参考$man date)
$date --date="1999-01-03 05:30:00" 100 days
显示从1900-01-03 05:30:00向后100天的日期时间
$sleep 300
休眠300秒
进程
$top
显示进程信息,并实时更新
$ps
显示当前shell下的进程
$ps -lu username
显示用户username的进程
$ps -ajx
以比较完整的格式显示所有的进程
$kill PID
杀死PID进程 (PID为Process ID)
$kill %job
杀死job工作 (job为job number)
$lsof -u username
用户username的进程所打开的文件
$dmesg
显示系统日志
$time a.out
测试a.out的运行时间
硬件
$uname -a
显示系统信息
$df -lh
显示所有硬盘的使用状况
$mount
显示所有的硬盘分区挂载
$mount partition path
挂在partition到路径path
$umount partition
卸载partition
$sudo fdisk -l
显示所有的分区
$sudo fdisk device
为device(比如/dev/sdc)创建分区表。进入后选择n, p, w
$sudo mkfs -t ext3 partition
格式化分区patition(比如/dev/sdc1)
修改/etc/fstab,以自动挂载分区。增加行:
/dev/sdc1 path(mount point) ext3 defaults 0 0
$arch
显示架构
$cat /proc/cpuinfo
显示CPU信息
$cat /proc/meminfo
显示内存信息
$free
显示内存使用状况
$pagesize
显示内存page大小(以KByte为单位)
网络
$ifconfig
显示网络接口以及相应的IP地址。ifconfig可用于设置网络接口
$ifup eth0
运行eth0接口
$ifdown eth0
关闭eth0接口
$iwconfig
显示无线网络接口
$route
显示路由表。route还可以用于修改路由表
$netstat
显示当前的网络连接状态
$ping IP
发送ping包到地址IP
$traceroute IP
探测前往地址IP的路由路径
$dhclient
向DHCP主机发送DHCP请求,以获得IP地址以及其他设置信息。
$host domain
DNS查询,寻找域名domain对应的IP
$host IP
反向DNS查询
$wget url
使用wget下载url指向的资源
$wget -m url
镜像下载
SSH登陆与文件传输
$ssh ID@host
ssh登陆远程服务器host,ID为用户名。
$sftp ID@host
登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:
get filename # 下载文件
put filename # 上传文件
ls # 列出host上当前路径的所有文件
cd # 在host上更改当前路径
lls # 列出本地主机上当前路径的所有文件
lcd # 在本地主机更改当前路径
$scp localpath ID@host:path
将本地localpath指向的文件上传到远程主机的path路径
$scp -r ID@site:path localpath
以ssh协议,遍历下载path路径下的整个文件系统,到本地的localpath
压缩与归档
$zip file.zip file1 file2
将file1和file2压缩到file.zip
$unzip file.zip
解压缩file.zip
$gzip -c filename > file.gz
将文件filename压缩到file.gz
$gunzip file.gz
解压缩file.gz文件
$tar -cf file.tar file1 file2
创建tar归档
$tar -zcvf file.tar file1 file2
创建tar归档,并压缩
$tar -xf file.tar
释放tar归档
$tar -zxf file.tar.gz
解压并释放tar归档
打印
$lpr filename
打印文件
$lpstat
显示所有打印机的状态
http://www.cnblogs.com/lizhenghn/p/3682014.html
本文章记录我在linux系统下常用或有用的系统级命令,包括软硬件查看、修改命令,有CPU、内存、硬盘、网络、系统管理等命令。但本文不打算介绍生僻命令,也不介绍各个linux发行版下的特有命令,且以后会持续更新。
说明,我是在一个Centos 6.4 64位的虚拟机系统进行测试。本文介绍的命令都会在此Centos下运行验证(也有部分命令会在我的suse/ubuntu系统里测试的,会做特明说明),但运行结果就不再列出了。
硬件篇
· CPU相关
lscpu #查看的是cpu的统计信息.
cat /proc/cpuinfo #查看CPU信息详细信息,如每个CPU的型号,主频等
· 内存相关
free -m #概要查看内存情况 这里的单位是MB
cat /proc/meminfo #查看内存详细信息
· 磁盘相关
lsblk #查看硬盘和分区分布,显示很直观
df -h #查看各分区使用情况
cat /proc/partitions #查看硬盘和分区
mount | column -t #查看挂接的分区状态
· 网卡相关
lspci | grep -i 'eth' #查看网卡硬件信息
ifconfig -a #查看系统的所有网络接口
ethtool eth0 #如果要查看某个网络接口的详细信息,例如eth0的详细参数和指标
软件篇
· 内核相关
uname -a #查看版本当前操作系统内核信息)
cat /proc/version #查看当前操作系统版本信息
cat /etc/issue #查看版本当前操作系统发行版信息
cat /etc/redhat-release #同上
cat /etc/SuSE-release #suse系统下才可使用
lsb_release -a #用来查看linux兼容性的发行版信息
lsmod #列出加载的内核模块
· 网络
ifconfig #查看所有网络接口的属性
iptables -L #查看防火墙设置
service iptables status #查看防火墙状态
service iptables stop #关闭防火墙
route -n #查看路由表
netstat -lntp #查看所有监听端口
netstat -antp #查看所有已经建立的连接
netstat -s #查看网络统计信息进程
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
netstat -lt #只列出所有监听tcp端口
· 系统管理
top #查看系统所有进程的详细信息,比如CPU、内存等,信息很多!
df -lh #查看硬盘大小及使用率
mount #挂接远程目录、NFS、本地共享目录到linux下
hostname #查看/修改计算机名
w #查看活动用户
id #查看指定用户信息
last #查看用户登录日志
cut -d: -f1 /etc/passwd #查看系统所有用户
cut -d: -f1 /etc/group #查看系统所有组
crontab -l #查看当前用户的计划任务服务
chkconfig –list #列出所有系统服务
chkconfig –list | grep on #列出所有启动的系统服务程序
rpm -qa #查看所有安装的软件包
uptime #查看系统运行时间、用户数、负载
/sbin/chkconfig --list #查看系统自动启动列表
/sbin/chkconfig –add mysql #把MySQL添加到系统的启动服务组里面
· 文件相关
ls -lht #列出一个文件夹下所有文件及大小、访问权限
du -sh <dir> #查看指定目录的大小
du -lh <dir> #查看指定目录及各文件的大小 ln -s #建立软链接
· 进程相关
pstree -p pid #查看一个进程下的所有线程
pstree -a #显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
ps -ef #查看所有进程
kill -9 pid #杀死进程
kill all test #杀死进程
kill -9 `pgrep test` #杀死进程
./test.sh & #使程序在后台运行
nohup ./test.sh & #使程序在后台运行
· 压缩解压缩
zip -r dir.zipdirfile #将目录dir、文件file等压缩到zip包,
zip -re dir.zipdirfile #创建zip包,且加密
unzipdir.zip #解压
tar -zcvf dir.tar.gz dirfile #将目录dir、文件file等压缩到tar包
tar -xf dir.tar.gz #解压
· screen命令
screen命令组最大的好处就是当你的shell退出或关闭后,你运行的服务不会关系,也就是说,我们可以在screen里开启一组服务,且不受终端断开的影响。
screen -S test #创建一个名字为test的screen
screen -r test #打开名字为test的screen
screen -r pid #打开进程号为pid的screen
screen -ls #列出所有的screen
ctrl + a,d #当在一个screen时,退出screen
ctrl + a,n #当在一个screen时,切换到下一个窗口
ctrl + a,c #当在一个screen时,创建一个新的窗口
· scp命令
scp local_file remote_username@remote_ip:remote_dir #拷贝本地文件到远程机器上
scp -r local_dir remote_username@remote_ip:remote_dir #拷贝本地整个目录到远程机器上
· 软件包安装管理命令
假设你想要安装的软件包叫做app,注意,这里的命令通常需要sudo或者root权限。
//centos系统、redhat系统
rpm -qa | grep app #查找本机是否安装了app;
rpm -ivh app.rpm #假设你有app的rpm包,这样直接安装
sudoyuminstall app #否则就在线安装
yum update app #更新app
rpm -e app #删除已安装的app包
//suse、opensuse系统
zypper search app #查找本机是否安装了app;
zypper install app #安装
zypper update app #更新
zypper remove app #删除
zypper lr #列出所有已定义的安装源。
zypper ar #添加新安装源。
zypper rr #删除指定的安装源
zypper mr #修改指定的安装源
//ubuntu系统
apt-get install app #安装
apt-get update app #更新
apt-get remove app #删除
apt-cache search app #搜索软件包
dpkg -i app.deb #假设你有app的deb包,这样直接安装
请关注,后续随着使用的深入还会持续更新。