常用命令参考
用到一个记录一个,不求系统。要查看 Linux 中有哪些命令,可以输入头一个或者头几个字母,然后按两次 Tab 键,浏览以这个字头的命令。在 Ubuntu 上获得命令的简单帮助信息,可以用“命令名称 --help
"的方式获取,获取详细帮助,则可通过 man
. 命令执行后,如果成功,一般是不会返回任何提示信息的,这点比较符合"No news is good news."的说法。
命令详解
cal
cal
命令显示日历,但默认以星期天作为每月的开头,怎样调整成星期一作为开头? 答:cal -m 1
chkconfig
配置开启启动程序的命令,有 on/off 两个选项,需要管理员权限执行。
sudo chkconfig tomcat6 off #开机不启动 tomcat
sudo chkconfig tomcat6 on #开机启动 tomcat
在 Ubuntu 中,chkconfig 默认是不安装的,需要执行命令"sudo apt-get install chkconfig
"手动安装。
chmod
u: 本用户, g: 本组, o: 其他人(其他组的人?), a: 所有用户
x 可执行, w 可写, r 可读.
示例:
chmod u+x helloworld
# 对本用户,给文件 helloworld 加上可执行属性chmod a+wr helloworld
# 对所有用户,给文件 helloworld 加上可读可写属性chmod a-x *
# 对所有用户,对当前目录的所有文件,去掉可执行属性
数字用法:
chmod (u)(g)(o) filename
前面例子中的三条命令, 适合对现有文件增删属性. 如果直接使用数字方式, 则需要明确 u, g, o 三位的数值.
括号位为数字位. 数字含义: 1: x 可执行, 2: w 可写, 4: r 可读.
准确一点的说法应该是,1表示可执行但不可读。
这里的数字定义其实是这样来的:
- x = 001
- w = 010
- r = 100
例如:
chmod 764 helloworld
# 764 对应 ugo, 即: u 的权限为7(1+2+4=xwr), g 的权限为6(2+4=wr), 等等
上面这个命令相当于
chmod 764 helloworld
# 764 对应 ugo, 即: u 的权限为7(1+2+4=xwr), g 的权限为6(2+4=wr), 等等
参素 -R
表示对当前目录以及目录下所有文件(包含目录)都有效。
chgrg
改变文件所属的组
chgrg pei ccav
#将文件 ccav 所属的组属性改为 pei
chown
改变文件的拥有者和所属组(Change the owner and/or group of each FILE to OWNER and/or GROUP.)
chown hellouser ccav
#将文件 ccav 的拥有者改为 hellouserchown hellouser:pei ccav
#将文件 ccav 的拥有者改为 hellouser, 并将所属的组属性改为 pei
chsh
切换 shell
chsh -s /bin/csh
切换到 csh,不过 Ubuntu 默认安装的两个 shell 里没有它。
附:如果要查看当前系统支持的 shell,可以通过 ls -l /bin/*sh 达到。
crontab
这个命令很棒,用于设定系统定时或周期性任务。
crontab -e
编辑任务,在某些 Linux 发行版中,编辑保存后不会立刻生效,此时可以执行 /etc/init.d/crond restart
确认生效。
crontab -r
删除所有任务,慎用
crontab -l
浏览现有的任务
crontab 文件名
,在外部编辑好任务文件后,由 crontab 载入进去,注意,这种载入会覆盖原先的内容的,慎用
如果执行的命令比较简单,可以直接编辑 /etc/crontab 的内容(实践表明,并不妥当,某用户要添加任务时,应该登录到某用户的 shell 里,然后执行 crontab -e 进行添加),加上一两行即可。但如果执行的任务比较复杂,应单独写 shell 脚本,然后在定时任务里设置执行脚本即可,这样做的好处是,以后直接维护脚本即可,不用修改 crontab 的内容。
例子:给 mysql 做自动备份。
1. 创建 shell 脚本文件 /home/iridium/temp/dbbak.sh,内容如下:
# mysql 数据备份,这里需要注意的是 date +%Y... 加号和后面的字串不能有空格。
/usr/bin/mysqldump -u root -phelloworld dbNameHere | gzip -c > /home/iridium/temp/$(date +%Y%m%d%H%M%S)-dbNameHere.sql.gz
2. 执行 crontab -e
,添加如下内容:
# 每5分钟执行一次数据库备份脚本
*/5 * * * * /home/iridium/temp/dbbak.sh
重要说明,crontab 中的时间,很有趣,是这样的:依次为“分 时 日 月 星期”,具体数值范围规定等,参下段的推荐文章。
这里推荐一篇好文《第十六章、例行性工作排程 (crontab)(鳥哥的 Linux 私房菜)》,写得非常好!
date
下面是一个设置日期和时间的例子:
# date -s 04/23/2014
Wed Apr 23 00:00:00 CST 2014
# date -s 16:04:45
Wed Apr 23 16:04:45 CST 2014
如果要查看当前时间,直接使用 date
指令,不带任何参数即可。
df
df -l
查看分区的详细信息。
df /home/iridium
查看目录 /home/iridium 在哪个分区上,查看其他目录类似。
du
统计目录中所有文件占用的空间:
du -sh uploadfiles
参考:http://www.yayu.org/look.php?id=162
env
查看当前用户的环境变量,内容较多,实际使用可以使用管道符和 more 连接,也可以使用管道符和 grep 过滤一下。
file
查看文件信息,如:
$ file pis.war
pis.war: Zip archive data, at least v2.0 to extract
find
Linux 查找某文件的命令是什么? find / -name "XXX"
这个例子是从 /
查起,可换成需要的目录。
free
查看内存使用情况,如:
$ free -lh
gzip
压缩,压缩完成之后,会删除 fileName,但可以看到新文件 fileName.gz
gzip fileName
注:这个命令只能针对某个文件,不能针对目录。
解压 gz 文件
gzip -d fileName.gz
注:可以通过 gzip -h
查看该命令的帮助信息。更多关于 Linux 下加解压的操作参《压缩或解压文件或文件夹》。
head
查看文本的前几行,如
head hello.sh -n 1
显示 hello.sh 这个文本的头一行。
同系列的命令有查看全部文本内容的 cat 和查看最后几行文本的 tail.
history
history | more
查看最近用到的所有命令
history 5
查看最近的5个命令
!9904
执行编号为9904的命令
!ls
执行最后一个以 ls 打头的命令 ( TODO )
ifconfig
这个命令,和 Windows 中的 ipconfig 基本上等同。
ifconfig
查看本机网络信息
ifconfig eth0 192.168.12.34
修改 eth0 的 IP 地址为192.168.12.34
ls
查看文件列表的命令,应该是单词 list 的缩写。常用参数如下:
- -a 显示隐藏的文件
- -l 显示文件的详细信息,如大小,创建时间等,如果是符号连接,还会显示这个连接的源。(详解)
如果执行 ls 命令得到的内容中文件名称没有颜色,可以在当前用户的家目录下加一条:alias ls="ls --color=always"
,参这里。
较为复杂的例子:统计目录下文件数量:
ls -R uploadfiles | wc -l
ls -R /hello/uploadfiles | wc -l
mkdir
这个命令没什么好说的,就是 make directory 的意思,只是有个参数要留意下:
- 创建同级的多个目录,
mkdir dir0 dir1 dir2 dir3
可以在当前目录下一并创建 dir0, dir1, dir2, dir3 四个目录。 - -p 按路径创建目录,比如
mkdir a/b/c/d/e -p
,如果 a 到 e 其中任意目录不存在,命令执行时都会被创建,如果原先已经存在,则保持。
modprobe
TODO: modprobe 命令是干嘛的,装虚拟机的时候用过。
more
在 Linux 命令行下, 如果一屏显示的内容的太多, 需要分屏, 可以使用 more 命令, 比如
vi --help | more
表示分屏查看 vi 的 help 内容
passwd
修改密码,一般用户只能修改自己的密码,不带参数时,默认修改当前用户密码。root 用户可用 password {username} 的方式修改其他用户的密码。如:
pkill
踢人。需要 sudo. 先用 who 命令查到 tty 然后再踢人,如:
pkill -kill -t pts/1
ps
查看进程,有两个比较有用的参数
-e all processes
-f full
例:查看 jboss 启的所有进程 ps -ef | grep jboss
rm
remove file, 删除文件
rm -rf aaa
删除 aaa,如果 aaa 是目录,则将 aaa 中的一切目录和文件删除。r 表示递归的意思,f 表示强制的意思。
在 Linux 中,有一个最危险的操作,是 rm /
,表示删除一切文件,可用虚拟机做这个实验,我在虚拟的 Ubuntu 上执行了 sudo rm -rf /
,出现警告,按警告的提示进一步确认执行操作,结果是破坏性的,文件系统被清空,重启已经没有系统了。
rmdir
删除目录 rmdir hello 删除 hello 目录
如果目录中有其他文件,则目录不能删除
rmdir hello/world -p
以上代码删除二级目录,如果 hello 目录下只有一个可删除的 world 目录,则最后 hello 目录也将被删除。
shutdown
定时关机命令:sudo shutdown -h +120
scp
通过 SSH 连接传送文件。
1. 下载文件。将远程服务器的资料传送到本地
scp -P10022 hello@211.*.*.*:/home/hello/mysql_data_bak/hello_data/201109070000-hello.sql.gz ~/201109070000-hello.sql.gz
2. 下载目录。
scp -r -P22 root@192.168.8.*:/root/shell_scripts ~/helloworld/
3. 上传文件。将本地的资料传送到远程服务器
scp hot*.jsp hello@211.136.163.178:/home/hello/
4. 上传目录
scp -r -P22 jdom root@192.168.8.217:/root/jdom/
这里需要特别注意的是机器名(或 IP)之后的冒号!
参考:采用scp命令远程传输数据 - (dzassn的专栏 - 博客频道 - CSDN.NET)
ssh
SSH 连接命令,举例如下:
ssh iridium@172.168.1.104 -p 22
# 以用户名 iridium 登录 172.168.1.104,端口号 22
参数 -X 表示支持 X11 转发,能运行图形界面程序。
su
切换用户命令,用法:
su {username}
如果 username 为空,则切换到超级用户
tail
在终端里查看文件最后的10行,带参数 -f 可以同步查看文件,对看日志文件比较有用,例如:
tail -f {logfile}
同系列的命令有查看全部文本内容的 cat 和查看前几行文本的 head.
touch
创建一个新文件,或者更新访问时间和修改时间。
touch hello #创建一个空文件 hello
touch -m hello #将 hello 的修改时间更新为当前时间。
关于详细的用法,执行 touch --help
即可:
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h is supplied.
A FILE argument string of - is handled specially and causes touch to change the times of the file associated with standard output.
uptime
'uptime' to get how long the current user uses system, e.g.:
$ uptime
10:34:56 up 18 days, 40 min, 1 user, load average: 0.20, 0.05, 0.02
wget
下载整个网站:wget
例如:$ wget -r -p -np -k http://www.fed.cuhk.edu.hk/readwrite/typing/content.htm
(下载仓颉输入法教程)
参考:http://www.linuxfans.org/bbs/thread-39403-1-1.html 的第4楼
who
查看当前用户,如:
iridium@iridium-laptop:~$ who
iridium tty7 2010-07-11 06:16 (:0)
iridium pts/0 2010-07-11 06:17 (:0.0)
iridium pts/2 2010-07-11 09:53 (:0.0)
iridium pts/1 2010-07-11 20:44 (aca80165.ipt.aol.com)
lyremi pts/3 2010-07-11 20:52 (aca80165.ipt.aol.com)
组合使用
ISO 镜像
制作 ISO 文件:cp -r /home/user name.iso
,我这里不能用这个命令, 用这个才行:mkisofs -r -o myiso.iso /dev/cdrom
挂载 ISO 文件的命令例子
$ sudo mkdir /media/ISO
$ sudo mount -o loop ~/ubuntu.iso /media/ISO
本机用到的
sudo mount -o loop /media/data/library/language/english/EIPS.ISO /home/iridium/english/eips/
有时还可能用到 -t iso9660 参数和参数值,例如:
mount /mnt/arch-0.5-base.iso /src -o loop -t iso9660
卸载
$ sudo umount /media/ISO
查看本机信息
查看本操作系统的简单信息:
(这个也可以通过[系统]-[系统管理]-[系统监视器]-[系统]查看到)
iridium@iridium-laptop:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.04
Release: 9.04
Codename: jaunty
iridium@iridium-laptop:~$ cat /etc/issue
Ubuntu 9.04 \n \l
附
这里还有很多常用的命令:http://wiki.ubuntu.org.cn/UbuntuSkills