# Linux命令
Linux终端介绍
tty 控制台终端
一开始 进入的是图形界面:tty1 就是图形界面
tty1-tty6
图形界面切换到字符界面终端:Ctrl+Shift+Alt+F2-F6
重新切换成图形界面:Ctrl+F1
pts虚拟终端,伪终端
ssh工具链接上之后和在图形化界面打开一个终端一样都是pts虚拟终端
打开一个pts虚拟终端:Ctrl+Shift+T
切换终端窗口:Alt+1 Alt+2 …
放大: Ctrl + Shift + +
缩小:Ctrl + -
shell提示符
[ root@localhost ~ ]$
[ 用户@主机名 当前工作目录名 ] 提示符 提示符root为#,普通用户为$
Bash Shell基本语法
Linux命令输入规律:
如何输入命令:
格式:命令 [选项] ([参数]) [选项的值] ([参数的值])
注意:有空格,作为分割
常见选项(参数):
- -h –help ;特点:选项样子为:-字母 或 –加单词
基本命令:
ls命令
作用:查看目录下有哪些文件
语法:ls 目录,如果不加目录查看当前目录
参数:
-l 显示详细信息
-a 显示隐藏文件 -A 显示隐藏文件(系统文件除外)
-d 查看目录(不查看里面的内容)
-h 增加可读性
-i 查看inode节点
pwd命令
作用:查看当前目录
语法:没有参数
cd命令
作用:切换目录
语法:cd目录名
特殊用法:
cd 回到用户自己主目录
cd ~ 回到用户自己主目录
cd - 回到执行前所在的目录
cd /etc/sysyconfig/ 和cd /etc/sysconfig一样
cd /etc/ 和 cd /etc 一样
hwclock
作用:查看系统和BIOS硬件时间:指的是bios时间
Linux获取帮助
方法1:命令 加参数 -h 或者加 --help
方法2:man 命令 man是手册的意思
shutdown
作用:关机、重启、定时关机
参数:
-r => 重启
-h => 关机
-h 时间 => 定时关机
-c => 取消之前的定时关机
或者直接在下命令的终端直接Ctrl+c
shutdown -h now #立即关机
shutdown -h +10 #10分钟后关机
shutdown -h 10.00 #十点钟关机
#shutdown -r 和 shutdown -h用法一样
shutdown -r now #立即重启
shutdown r +10 #10分钟后重启
shutdown -r 22:22 #22:22以后重启
init
作用:切换系统运行级别
语法:init 0-6
0代表关机、1 单用户模式、2多用户、3多用户(字符界面)、4没有定义、5图形界面、6重启
runlevel
作用:查看当前运行级别
reboot
作用:重启
touch
作用:常用来创建空文件
语法: touch 文件名
[root@xuegod63 /]# touch a.txt
[root@xuegod63 /]# ls a.txt
a.txt
mkdir
作用:创建目录
语法:mkdir 目录名
参数:
-p 连同父目录一期创建
-m 创建的同时设置权限
e g:
> mkdir /tmp/test
> mkdir -p /a/b/c/d
cat
作用:查看文件内容
语法:cat 文件
参数:-n 查看时显示行号
e g:
> cat /etc/passwd
more
作用:查看文件名字
语法:more 文件
e g:
> more /etc/passwd
less
作用:查看文件名字
语法:less 文件
e g:
> less /etc/passwd
more与less的区别
more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便。
less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)。空格键是向下翻页,Enter键是向下翻一行
head
作用:从第一行开始,查看文件,默认显示前10行
参数:-n 数字 显示多少行
e g:
> head /etc/passwd
> head -n 3 /etc/passwd
tail
作用:从最后一行开始,查看文件,默认显示最后10行
参数:-n 数字 显示多少行
-f 动态显示数据(不关闭),常用来查看日志
e g:
> tail -f /var/log/messages
cp
作用:复制文件或目录
语法:cp 源文件 目标文件
参数:
-r 包含子目录和文件
e g:
> cp /etc/passwd /tmp/
> cp /etc/ /tmp/
> cp -r /etc/ /tmp/
rm
作用:删除文件或目录
语法: rm -rf 文件或目录名
参数:
-r 递归删除(可以删除目录和目录里面的东西)
-f 不询问直接强行删除
e g:
> rm -rf /tmp/test
# 排除某文件或目录不删除 index.php是要保留的文件名字,此名字可以是文件夹也可以是文件名都可以
> rm -rf `ls -I index.php`
#删除文件夹内所有文件保留部分文件
> rm -rf `ls|egrep -v '(index.php|data)'`
mv
作用:重命名(移动到不同路径则为剪切)
语法:mv 源文件或目录名 目标文件或目录名
e g:
> mv test test1 #重命名
> mv test /tmp/ #剪切
> mv test /tmp/test1 #剪切并改名
diff
作用:比较两个文件是否一样
语法:diff 文件A 文件B
stat
作用:查看inode中包含的内容
语法:stat 文件
useradd/adduser
作用:添加用户
语法:useradd 用户名
参数:
-u UID
-d 主目录
-g 所属组 #只能有一个
-G 附加组 #可以有多个
-s 登陆shell
userdel
作用:删除用户
语法:userdel 用户名
参数:
-r 递归 ,连同用户目录一起删除
usermod
作用:修改用户信息
语法:usermod 用户名
参数:
-u 修改uid
-d 主目录
-g 所属组 #只能有一个
-G 附加组 #可以有多个
-s 登陆shell
su
作用:切换用户
语法:su - 用户名
参数:
加上 - 在切换时会把环境变量一起进行切换
不加 - 保留原本的环境变量
id
作用:显示用户的UID和GID信息
语法:id 用户名
w
作用:用于显示已经登录系统的用户列表,并显示正在执行的指令与程序
who
作用:显示目前登录系统的用户信息
whoami
作用:打印当前用户名称
finger
作用:查找并显示用户信息
语法:finger 用户名
安装:yum -y install finger
pstree
作用:树型结构显示系统进程信息
语法:pstree 参数
参数:
-p 显示进程号
tree
作用:显示目录树形结构
语法:tree 目录
安装:rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
ps
作用:列出目前所有的正在内存当中的进程
语法:
ps -aux 是用BSD的格式来显示进程。
ps -ef 是用标准的格式显示进程
top
作用:动态查看进程
语法:top
使用说明:
默认3s刷新一次
空格 :立即刷新。
q退出
M按内存排序
P按CPU排序
<> 翻页
kill
作用:控制(关闭)进程
语法:kill 信号 pid
常用信号:
1 HUP 重新加载配置文件。类似重启。
2 INT 和ctrl+c一样 一般用于通知前台进程组终止进程****
9 KILL 强行中断
19 STOP 和ctrl+z一样
killall/pkill
作用:通过程序的名字,直接杀死所有进程
语法:killall/pkill 程序名字
nice
作用:优先级控制,以什么优先级运行进程 。默认优先级是0
语法:nice -n 优先级数字 程序名称
说明:值 -20 ~ 19 越小优先级越高 普通用户0-19
renice
作用:修改正在运行的进程的优先级
语法:renice -n 优先级数字 PID
jobs
作用:列出所有后台进程
语法:jobs
fg
作用:后台程序改成前台
语法:fg 后台进程序列号
free
作用:查看系统内存量
语法:free
参数:
-m 按照MB显示
screen
作用:会话窗口
语法:
ln
作用:建立软/硬链接
用法:ln 源文件 目标文件
参数:
-s 建立软链接
eg:
1. 建立软连接 a 是源文件,b是链接文件名,作用是当进入b目录,实际上是链接进了a目录
> ln -s a b
2. 删除软链接: 注意不是rm -rf b/
> rm -rf b
3. 建立硬链接 (没有-s)
> ln a b
软链接:
1.以路径的形式存在。类似于Windows操作系统中的快捷方式
2.可以 跨文件系统 ,硬链接不可以
3可以对一个不存在的文件名进行链接
4.可以对目录进行链接
硬链接:
1.以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.只有在同一个文件系统中才能创建
file
作用: 确定file type
用法: file 文件
注意:linux系统不根据后缀名识别文件类型,用file命令查看文件的类型
which
作用:查找可执行文件
语法:which 可执行文件名称
whereis
作用:查找可执行文件及相关文件
语法:whereis 可执行文件名称
locate
作用:通过数据库缓存查找文件
语法:locate 文件名
说明:极少使用,该命令无法找到新创建的文件,必须执行updatedb命令更新数据库才能找到,每天两点左右系统会自动执行updatedb命令
find
作用:查找文件
语法:find 路径 参数 参数值 【-print 】【 -exec -ok command 】 {} \;
-print # 将查找到的文件输出到标准输出
-exec command {} \; #将查到的文件执行command操作,
-ok # 和-exec相同,只不过在操作前要询用户
{} 和 \; # 是固定格式,之间有空格
command # 要对查找出的文件执行的命令
参数:
按时间查找参数:
-atime n # 将n*24小时内存取过的的文件列出来
-ctime n # 将n*24小时内改变、新增的文件或者目录列出来
-mtime n # 将n*24小时内修改过的文件或者目录列出来
-newer file # 把比file还要新的文件列出来
用户及组查找参数:
-gid n # 寻找群组ID为n的文件
-group name # 寻找群组名称为name的文件
-uid n # 寻找拥有者ID为n的文件
-user name # 寻找用户者名称为name的文件
-nogroup # 寻找文件的属组在/etc/groups中不存在
-nouser # 寻找文件的属主在/etc/passwd中不存
权限查找参数:
-perm 0777 # 按执行权限来查找
文件属性查找参数:
-size n # 查长度为n的文件 +n代表大于n -n代表小于n
-depth # 使查找在进入子目录前先行查找完本目录
-name file # 寻找文件名为file的文件(可以使用通配符)
at(atd必须开启)
作用:计划任务,只能执行一次
语法:at 时间 # 进入编辑要执行的操作
参数:
-l # 查询at计划任务
使用:
> at 20:00
# 进入编辑,输入要执行的命令
echo `date` > /tmp/date.txt
# 按下Ctrl+D 结束
>^+d
# 也可以这样写
> at 20:00 2015-2-23
> at now +10min
atrm
作用:删除at计划任务
语法:at 序列号 #序列号可通过at -l查看
周期性计划任务:(crond服务要开启)
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,是linux的内置服务,不自动启动
crontab
安装crontab:
> yum install crontabs
查看执行历史
> tail -f /var/log/cron
启动服务
> /sbin/service crond start
关闭服务
> /sbin/service crond stop
重启服务
> /sbin/service crond restart
重新载入配置
> /sbin/service crond reload
查看服务运行状态
> /sbin/service crond status
设置服务自动启动,在/etc/rc.d/rc.local这个脚本末尾加上
> /sbin/service crond start 或者: > chkconfig –level 35 crond on
新增任务计划可用两种方法:
- 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出
- 直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
查看已存在任务
> crontab -l # 列出用户jp的所有调度任务 > crontab -l -u jp
删除任务调度工作,删除所有任务调度工作
“`
crontab -r
“`crontab命令选项: cron服务提供crontab命令来设定cron服务的
-u 用户
-l 列出任务计划,
-r 删除任务,
-e 编辑某个用户的任务
cron文件语法
分 小时 日 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command
取值范围:
分:0-59
小时:0-23
日:1-31
月:1-12
周:0-7 0 7 都是周日
几个特殊符号的含义:
"*" 代表取值范围内的所有数字,
"/" 代表"每",
"-" 代表从某个数字到某个数字,
"," 分开几个离散的数字
anacron
1. cron用控制循环执行例行性工作。如果我要设定机器每早8点进行备份用服务。除非我机器保证在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。
2. anacron并没有取代cron的意思,anacron用于,机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即,执行一下没有执行的任务
chkconfig
作用:
用法:
常用:
chkconfig 服务名 on #把服务设为开机启动
zip
作用:压缩文件
用法: zip 参数 生成的zip文件 被压缩的文件/目录
参数:
-r 递归压缩一个目录
unzip
作用:解压文件
用法: unzip 解压的zip文件 [ -d 目录 ] 如果没有跟目录,默认当前目录
参数:
-d 指定解压到的目录
tar
作用:**打包、压缩文件**
语法:tar 选项 文件
参数:
-c : 建立一个压缩文件的参数指令(create 的意思);
-x : 解开一个压缩文件的参数指令
-t : 查看 tarfile 里面的文件!
-z : 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j : 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v : 压缩的过程中显示文件
-f : 使用档名
-p : 使用原文件的原来属性(属性不会依据使用者而变)
-P : 可以使用绝对路径来压缩!
-N : 比后面接的日期(yyyy/mm/dd)要新的才会被打包进新文件中
--exclude FILE: 除了FILE不压缩,排除多个,增加 --exclude FILE 即可
特别注意:
1. 参数的下达中,c/x/t 只能存在一个,因为不可能同时压缩与解压缩
2. 在 f 之后要立即接档名喔!不要再加参数
常用命令:
# 仅打包,不压缩
> tar -cvf /tmp/etc.tar /etc
# 打包后,以 gzip 压缩
> tar -zcvf /tmp/etc.tar.gz /etc
# 打包后,以 bzip2 压缩
> tar -jcvf /tmp/etc.tar.bz2 /etc
# 排除目录进行打包压缩
> tar -zcvf tomcat.tar.gz --exclude=tomcat/logs --exclude=tomcat/libs tomcat
> tar zcvf dlbbs-2017-05-1110.tar.gz --exclude=upload/data --exclude=upload/uc_server/data/avatar --exclude=upload/uc_server/data/avatar_bak --exclude=upload/static --exclude=upload/static_bak upload/
#解压缩/tmp/etc.tar.gz
> tar -zxvf /tmp/etc.tar.gz
#解压缩/tmp/etc.tar.bz2
> tar -jxvf /tmp/etc.tar.bz2
#解开压缩文件内的 etc/passwd
> tar -zxvf /tmp/etc.tar.gz etc/passwd
#查阅/tmp/etc.tar.gz有哪些文件
> tar -ztvf /tmp/etc.tar.gz
rpm 安装功能
作用:管理rpm包
语法: rpm 【选项】 包名
参数:
-i, --install install package(s)
-v, --verbose 显示详细信息
-h, --hash # 安装时打印散列标记#号
常用:
# 通过rpm包安装软件
> rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
# 忽略依赖强制安装
> rpm -ivh --nodeps /mnt/Packages/mysql-server-5.1.52-1.el6_0.1.x86_64.rpm
安装时解决依赖关系:
方法1 : 直接找以perl-DBD-MySQL开头的包
方法2: 找关键字 root@xuegod63 Packages]# ls \*perl-DBD-MySQL
方法3: 上rpm包相关的网站上找
http://rpmfind.net/
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
rpm查询功能:
作用:查询软件包相关信息
语法:rpm 【选项】 【软件名】
常用:
# 查询zsh软件是否安装
> rpm -q zsh
# 查询系统所有安装过的rpm软件
> rpm -qa
# 查询zsh这个软件安装后,产生了那些文件和目录
> rpm -ql zsh
# 查看文件是哪个软件安装的
> which zsh命令名 # 返回命令的绝对路径
> rpm -qf /bin/zsh # /bin/zsh是上一步查出的绝对路径
或
> rpm -qf `which zsh`
# 预先查看一个软件包,安装时将会生成哪些目录
> rpm -pql /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
rpm升级功能:
作用:对已安装软件进行升级
用法:rpm -Uvh 包名
rpm卸载功能:
作用:卸载已安装的软件
用法:rpm -e 软件名
强制卸载:rpm -e --nodeps 软件名
安装.src.rpm源码包的方法
# 将src.rpm中源码文件编译成可执行的二进制文件。
> rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm
# 若顺利执行成功则会在root用户家目录下生成一个: rpmbuild目录,然后使用rpm安装即可
导入RPM-GPG-KEY 在安装时对rpm的签名进行验证
用法:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
验证原理:非对称加密。 导入公钥。验证rpm中的签名是否是对的
使用yum安装软件 自动装软件包(软件包管理)
解决依赖关系问题、自动下载软件包。基于C/S架构
配置yum源配置文件
> cd /etc/yum.repos.d/ > cp rhel-source.repo rhel-source.repo.back #根据实际情况进行操作 > cat rhel-source.repo [local-Server] #serverid用于区别各个不同的yum软件包库,必须有独一无二的名称 name=local-Server #是对yum软件包库的描述 baseurl=file:///mnt #repodata目录所在的目录 #baseurl=file:///media/Server #RHEL5 repodata目录所在的目录是Server enabled=1 #为1,表示可以用 gpgcheck=1 #为1,使用公钥检验rpm的正确性 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
yum的使用
- yum clean all #清除yum源缓存
- yum list #列出当前配置yum源的列表
- yum install 软件名 #安装
- yum -y install 软件名 #不询问直接安装
- yum grouplist #列出软件组
- yum groupinstall “Development tools #安装一组软件
- yum list z.* #列出以z开头的软件
- yum search 软件名 #按软件名查找
- yum remove 软件名 #删除软件
源码编译安装软件包
系统必须安装:开发工具、开发库
步骤:
获得源码包
解压
配置,检测安装环境
# 检查安装环境是否符合需求 ,如果没有问题,生成:Makefile文件 > ./configure # 或者指定软件安装目录,只会生成一个文件夹 # /usr/local/extundelete-mk 为指定的目录 > ./configure --prefix=/usr/local/extundelete-mk
编译
# 编译时会读取Makefile文件 > make
安装
> make install
删除
# 安装时没有使用--prefix参数指定目录,在软件安装目录执行 > make uninstall # 如果安装时使用--prefix参数指定了安装目录,直接删除掉目录即可
软件安装方法特点
- rpm+yum: 方便,软件版本低。稳定性好、管理方便。性能稍差。
- 手动源码编译安装:麻烦,软件版本新。稳定性稍差、管理稍差。性能好。一般只有LAMP,LNMP服务环境才会使用源码安装
Linux系统目录结构
注意:每个目录下都有 . 和 .. 这两个隐藏目录,. 代表当前目录,.. 代表上一级目录
倒置树型结构:
/ 通常称为根分区。所有的文件和目录皆由此开始。只有root用户对此目录拥有写权限
/etc 配置文件 包含所有应用程序的配置文件,也包含启动、关闭某个特定程序的脚本,例如/etc/passwd,/etc/init.d/network等
/boot 存放Linux系统启动时需要加载的文件。 (一般在另外一个磁盘分区里面保存) Kernel、grub等文件都存放在此
/home 普通用户所有数据存放在这个目录下
var 是一个可增长的目录,包含很经常变的文件。例如,/var/log(系统日志)、/var/lib (包文件)
/root 管理员所有数据。 root用户的家目录
/tmp 临时文件存储位置
/usr usr表示的是unix software source
/bin 命令 此目录包含二进制可执行文件
/sbin 系统命令 ,此目录中的命令主要供系统管理员使用,以进行系统维护。例如,iptables、reboot、fdisk等
/mnt 挂载目录 挂载点,系统管理员可用于临时挂载文件系统
/dev 包含设备文件。在Linux中,一切都被看做文件。终端设备、USB、磁盘等等都被看做文件,如/dev/sda