linux操作常用 命令
文件管理命令:
ls /:查看根目录下的内容
cd /dev/:进入到dev目录下,再用ls就可以查看该目录下的文件
以 . 开头的是隐藏文件,ls -a可以查看该目录下隐藏文件
ctrl+L 或者 clear :清屏
ctrl+C 终止程序
当cd到一个目录下时,操作该目录下的文件,前面不用加/,加/说明是绝对路径,要从根目录开始算
cat +文件名 | more
文件以
- -开头说明是个文件
- d开头说明是个目录
- l开头说明是链接文件
文件权限
- r读权限
- w写权限
- x执行权限
当用touch创建时,创建的是个文件。ls-l出来的是 - 开头的
当用mkdir创建时,创建的是个目录。ls -l出来的时这个目录下的文件 只有用ls -ld查看才能看到目录信息,以 d 开头
ls
- ls -a:显示全部文件
- ls -l:文件详细信息 ls-lh人性化显示
- ls -ld:显示目录信息而不是像上面的一样显示文件所包含子文件的信息,目录的详细信息
- ls -i:显示文件id号码 i节点
mkdir创建目录
例子:mkdir /tmp/first
注意,这里要在已有的文件目录下面创建新目录,不可以mkdir /tmp/frist/second,因为frist都不存在,怎么能在一个不存在的目录下面创建新目录呢
但是,可以使用-p选项来递归创建 mkdir -p /tmp/frist/second,这样就可以递归创建了。
cd命令 change directory,切换目录
- cd /tmp/first 进入first目录下面
- cd .. 返回上级目录
pwd命令 print working directory 显示当前目录
rmdir命令 remove directory 移除空目录,注意,只能是空目录,有东西的目录还是要用rm (-r -f)来实现
cp命令 copy 赋值文件
- cp -rp [原文件或目录]【目标目录】
- cp -r 用于复制目录(目录表示是个文件夹,里面含有别的文件)
- cp -p 保留文件属性(保留文件的信息,使得在ls -l详细查看文件时候,可以保留文件的更改时间)
mv命令 剪切或改名
- 剪切 :mv /tmp/one /root 把tmp下的one 剪切到 root目录下
- 剪切并改名:mv /tmp/one /root/one2 名字改成one2
- 只是改个名字: mv /tmp/one /tmp/two
- 注意,当当前目录就在tmp目录下时,可以直接mv one two ,把tmp下顶one改名为two
rm命令 remove删除
- rm -r /tmp/games 删除目录(文件夹)
- rm -f /tmp/games 强制删除(不会问你却不确定)
- rm -rf /tmp/frist 强制删除目录(且不会询问你却不确定呀)
touch命令 创建文件
- touch 文件名 ,注意在当前路径下创建不用加/,如果要在别的文件下创建,就要写绝对路径
cat命令 显示文件内容
- 语法:cat + 文件名
- cat -n 显示行号,把每一行都显示一个对应的行号
- cat /etc/issue cat -n /etc/services
tac命令,cat命令的死对手,把文件倒序显示 ,先显示最后几行
more命令,以分页的形式显示大文件内容
- 空格键或f 一页一页向下翻
- 回车键 一行一行向下翻
- q键(quit)退出浏览
less命令 more命令的加强版
- more里面的操作都相同
- 键盘上的PgUp键,可以向上翻页,上箭头,向上一行行翻
- /符号,查找类似于word里面的ctrl+F,搜索关键词。
- n键表示next,类似于查找中的“查找下一个”
head命令 显示文件前几行
- head -n 20 /etc/services 显示文件前20行,若不指定-n默认显示前十行
tail命令 显示文件末尾几行,很像上面的
tail -n 20 /etc/services
tail -f 动态显示文件内容,
就是说,我打开这个文件后,当有别的人改动这个文件的时候,我可以看到文件的变化。
主要用于监控服务器日志(他都被人干了啥)
touch cat cat -n tac more less head tail
ln命令(link) 生成链接文件
语法:ln -s [源文件] 【目标文件】 -s表示生成软链接
软链接文件,就相当于快捷方式。 文件类型为 lrwxrwxrwx,虽然对三种用户都有rwx权限,但也只代表用户对这个软链接的权限,真正的权限还是要看所链接文件的用户权限,
当软链接ls -l(list)时,会在文件名后面显示出这个软连接所指向的文件
issue.soft ->/etc/issue
- lrwxrwxrwx
- 有箭头 ->
硬链接:ln (没有-s) ,生成出来的文件和原文件一模一样(大小也一模一样),与拷贝cp不同的是,两个文件会同步更新。原文件就算丢失,硬链接文件也可以访问。软链接就不行了。判断文件是不是硬链接,用ls -i(查看文件id)i节点,会发现,原文件的id和硬链接文件的id是一样的(一个id可以有两个文件,当系统进行读写操作的时候,根据id来选择文件进行操作,两个文件的id一样,所以就同步更新了),超级厉害呀。怪不得同步更新。软链接的文件id就不与源文件相同。
- 实时同步的备份。
- 不可以跨分区(无效的跨分区链接)软可以
- 不可以针对目录使用,软可以
权限管理命令:
u 表示文件的所有者
g 表示一个组里的用户
o 表示其他人
r 读权限 ---4
w 写权限 ---2
x 执行权限 ---1
对于file文件来说
r:cat/more/head/tail/less
w:vim
x:script command(脚本,命令)
对于directory目录来说
r:ls
w:touch/mkdir/rmdir/rm (创建文件,创建目录,移除空目录,删除文件)
x:cd 进入目录
当目录有w权限时,便可以删除掉这个目录,即使目录下面的文件没有操作权限,也可以用rm一并连目录一起删掉,删除一个文件,需要对文件所在的目录有w权限。文件具有全部权限,但是文件所在的目录没有权限,那也不能对这个文件进行操作,目录权限才是老大。
useradd添加的用户信息在/home下面
chmod命令 change the permissions mode of a file 改变文件的权限模式
只有两个人才有权限改变文件权限,一个是u所有者,一个是管理员root
chmod {ugoa}{+-=}{rwx}[文件或目录]
chmod u=rwx jan 把jan 这个文件的所有者u的权限改变成为rwx
使用数字来代表twx chmod [mode=xxx] 文件路径
chmod 640 jan 表示把jan这个文件权限改变为-rw-r—-
chmod -R 递归修改权限,改变目录下所有文件的权限
chown命令 change file ownership 改变文件或目录的所有者
只有 root 才有chown 权限,别的用户都没有
- useradd 用户名 添加用户
- chown 用户A 文件名 把文件的所有者变成用户A
chgrp命令 change group改编文件或目录的所有组,操作方法和chown一样
- groundadd添加所有组
umask命令 the user filr-creation mask
- umask -S 以rwx的形式显示新建文件的缺省权限,缺省创建的文件时不能有x可执行权限的,任何新建的文件都会把x可执行权限去掉
- 直接umask表示的是新建文件权限的掩码,比方说出来0022,那么实际的缺省权限是777-022(后三位)=755–>rwxrw-rw-
- 当需要改变新建文件的缺省权限时,比方说我要所有新建的文件都是rwxr–r–权限。首先计算出这个权限的数字表示–>744,再用777-744=033 ,在umask 033就可以了,这时候新建的文件缺省权限就是rwxr–r– ,但是注意,新建的文件还是没有x执行权限,新建的文件夹目录就可以有x权限,你怎么设置,目录mkdir上就是什么
文件搜索命令:
find命令 find. 表示在当前目录下
语法 find 查找范围 查找条件
find / -name init 在/根目录下按照-name名字搜索 名字叫 init的文件,精准搜索,不是模糊搜索。想要模糊搜索,就把名字改为
*init*
表示模糊搜索init*,表示已init开头的文件 。 init???表示已init 开头的文件且后面还有三个字母,严格区分大小写
find / -iname init 不区分大小写
find / -size 按照文件大小查找
- find / -size +n表示大于n -n表示小于n =n表示等于n n在linux里面表示数据块
- 1数据块=512字节=0.5kb 所以查找大于100MB
- find / -size +204800
-user,按照用户名查找
- find /home -user 用户名A ,找到/home下所有用户名为A的文件
按照文件属性查找
- -amin assess 按照访问时间 find /etc -amin -5 表示在五分钟内(-)被访问过的文件
- -cmin change 按照文件属性 find /etc -cmin -30 表示30分钟内文件属性被改变的文件,文件属性就是在 ls -l查看文件时看到的
- -mmin modify 按照文件内容 find /etc -mmin -60 表示查找60分钟内被改变的文件
-type 按照文件类型查找
- f 文件 d目录 l软链接 find /etc -type f查找/etc下面文件(不是目录)
条件链接
- -a all 两个条件都吻合 详单与&&
- -o other 只要有一个条件满足就好了 相当于||
- find /etc -name init* -a -type f 表示在etc下查找以init开头的文件,且要求文件类型为-f(file不是目录,是文件)
对查找到的文件执行相应操作
- find /etc -name init -exec ls -l {} \;
固定格式 -exec或者-ok 后面加命令 再后面加 {} \; -ok会一直询问你要不要执行相应的操作
find /etc -name init* -a -type f -exec ls -l {} \;
-inum查找文件的i节点,多用于操作一些不好写名字的文件,在ls -l 时可以看到文件的i节点
- find /etc -inum 31531 -exec rm {} \; 删掉i节点为31531的文件
- 查找文件的硬链接
find -name =iname * ? -size + - -user -group -amin -cmin -mmin -type f d l -imun -a -o -exec/-ok{} \;
locate命令 快速查找文件
- 所有的文件会被放到一个文件库中,不用全盘查找,可以达到秒搜效果。但是这个文件库不是立刻更新的而是定时更新,所以当touch /tmp/asd 创建一个asd文件后,马上用 locate asd 就找不到文件,还没有更新到文件库里面,要调用updatadb命令更新一下才能查找到
- locate命令适用于查找系统文件,但是要查找放在/tmp下面的临时文件,是找不到的,不在文件库收录范围,
- locate -i 不区分大小写搜索
which 命令 搜索命令所在目录及命令别名
which rm 对rm命令执行which 操作
alias(别名) rm="re -i" /bin/rm
就出现了rm的别名”re -i” ,和他的目录/bin/rm。
注意在linux里是不会确认操作的,当我们用rm 命令时,其实是用”rm -i” 操作,不是原生的命令,在这里面添加了确认操作。当我们直接用 /bin/rm ,命令的话,就算不加-f,他也不会询问,直接删掉了。linux命令就是这么冷酷。所以一般用的rm其实就是rm -i
whereis命令 类似于which 返回命令的帮助文档
以#开始的行,表示注释,没啥用
grep (检索目标命令行)命令:在文件中搜索字符串匹配的行并输出
语言:grep -iv 指定字符串 文件
grep Network /root/anaconda.cfg 在/root/anaconda.cfg文件下查找Network所在的行
-i 不区分大小写 -v排除指定字串
grep -v ^# /etc/inittab 把以#开头的行不看。
- ^# 以#开头的文件
find
locate -i updatadb
which whereis
grep -i -v
帮助命令
帮助命令中 1 表示命令的帮助
5 表示文件的帮助(配置文件的帮助文档)
man命令:manual 获得帮助信息
- man ls 进入ls这个命令的帮助页面,这个页面符合less命令规则,可以用/来查找
- man service 查看配置文件services的帮助信息,注意,后买那就只要加配置文件的名称就可以了,不用加绝对路径,否则,就是直接把配置文件打印出来了。
- 在linux中,有可能命令和文件是同一个名字,比方passwd,当这时候 man passwd会优先展现出来命令的帮助信息,但要是想展现出文件的帮助信息 就 man 5 passwd (5表示文件,1表示命令
whatis +命令:显示命令的简短的信息
apropos +配置文件 :显示配置文件简短信息(只要写文件名就好,不用写绝对路径)
help命令,查看shell内置命令的帮助信息
- 很多命令是shell内置命令,比方说cd umask,这类命令无法通过man +命令名称 来查看命令帮助的,只能通过help +命令名称 来查看帮助文档
man 命令或而配置文件 命令 NAME 作用 /选项
配置文件 NAME 存放信息 文件格式
whatis 命令
apropos 配置文件相关信息
命令 --help
info 类似于 man
shell内置命令,就是用whereis which 找不到的命令 用help +命令名
用户管理命令
useradd 添加新用户
- useradd zhengjiang
passwd 为用户添加密码 ,使他可以访问服务器
- passwd + 用户名 回车后就会叫你输入密码了
- 管理员root可以更改任何人的密码,而且密码也可以不符合系统密码要求,但是用户就只能通过passwd +新密码来更改自己的密码,且必须符合密码规定。
who 查看登陆用户信息
- who 会显示
- 登陆用户名
- 登陆用户终端 (tty本地终端;pts远程终端 后面的数字表示不同的终端号)
- 登录时间
- 登陆ip,没写表示本机登陆
- w 命令,更加详细的用户信息
- 信息第一行 分别表示
- 系统时间
- 服务器linux系统运行时间 (uptime命令也可以查看相同信息)
- 服务器负载量
- 其他显示条目
- IDLE 表示用户空闲时间,最后一次操作到现在的时间间隔
- pcpu 用户操作占用CPU时间 jcpu累计时间 what 用户操作(-bash表示啥都没做)
压缩文件命令
压缩格式
rm -rf * 表示删除当点目录下的全部文件不用询问
. gz格式,只能压缩文件,不能压缩目录
- gzip +文件名 压缩文件,不保留源文件
- gunzip +文件名 解压缩,文件名可以是直接的文件名(不加后缀)也可以加后缀,但是当文件里面重名的文件时 比方说 a.gz 和a 那么就要gunzip+加后缀的文件名,否则报错,最好还是全写
tar命令,可以用来压缩目录
-c 打包 -v 显示详细信息(打包了目录下的哪些文件呀) -f 指定文件名 -z 打包同时压缩 -x 解包
压缩后的文件格式 .tar.gz
先把目录打包成一个.tar文件,在对这个打包文件进行gzip压缩,最后出来的是.tar.gz文件,网上一些资源的格式很多都是.tar.gz格式。
tar -cvf jan.rar jan 把jan目录打包成jan.rar文件
再用gzip jan,rar 把刚刚打包好的.rar文件给压缩一下
tar -zcf jan.rar.gz jan 直接把jan目录压缩打包为jan.rar.gz,一步完成,会保留源文件
tar -zxf jan.rar.gz 解压,也会保留源文件
zip命令:
- zip +压缩后的文件名.zip +要压缩的文件
- 会保留原文件
- zip -r 压缩目录
- unzip 解压缩 后面直接加要解压缩的.zip文件,不分文件还是目录都可以解压缩
bzip2压缩
- 特点
- -k 可以保留源文件
- 压缩比惊人的大,效率高。
- 产生.bz2文件后缀
- 只能压缩文件,不能压缩目录
- 于tar命令配合使用压缩目录时,只要把-z 换成-j便可。
- bzip2 -k jan 把jan文件压缩为.bz2文件格式。
- tar -jcf jan.rar.bz2 jan 把jan目录压缩为.rar.bz2文件
- bunzip2 解压缩,-k保留源文件
- .rar.bz2文件解压 tar -xjf 文件名.rar.bz2
- 因为bzip2不可以压缩目录,所以也要用到tar命令,先打包再压缩。在tar文件里 ta
.gz gzip gunzip (gzip -d) 不保留源文件
.rar tar -cf tar -xf
.rar.gz tar -zcf tar -zxf
.zip zip -r(保留) unzip
.bz2 bzip2 bunzip2 (-k 保留,压缩率大)
.rar.bz2 tar -jcf tar -jxf
网络命令:
write命令 给在线用户发送消息 可以用w查看在线用户
- write + 用户名 回车后 编辑发送内容
- CTRL + D 保存结束
- CTRL+ 删除键 才能实现删除打错的字
wall命令: write all 给所有在线用户发送消息,自己也会收到
- broadcast全局广播
ping 命令:
- -c ping -c 3 ip 指定ping几次,发送几次请求包
ifconfig命令,查看和设置网卡
mail命令:查看发送电子邮件,用户不在线也可以发,不像write
系统会给root用户发送一些重要邮件,当root用户登陆时,要仔细查看系统邮件。
- mail + 用户名 回车编辑 CTRL+D发送
- mail 后面没参数,查看自己收到的mail,
>N
开头表示new 新邮件,&后面输入邮件的数字就可以查看邮件内容了- h 表示回到邮件列表
- q 退出
last命令:列出目前于过去登陆系统的用户信息。包括系统reboot重启时间
lastlog命令:用户最后一次登陆的时间 -u +用户id
traceroute命令:显示数据包到我要访问主机间的路径,网络节点
传输协议:
- TCP 三次握手,双方均在线后再传输数据
- UCP 不握手,直接把数据丢过去 速度快
netstat命令:查询网络状态(status) 详细
- netstat -tlun 查看本机监听的端口
- netstat -an 查看本机所有的网络链接
- netstat -rn 查看本机路由表,查询网关
- netstat -tunlp | pr
setup:管理工具
nmtui:网络管理工具
service network restart:重启网络服务
mount:挂载命令
把挂载目录和设备文件名/dev/sr0,连接起来
- 先在/mnt目录下创建挂载目录 mkdir /mnt/cdrom
- mount -t 文件系统(iso9660) 设备文件名 (/dev/sr0) /mnt/cdtom
- cd /mnt/cdrom 进入到光盘的文件目录下,查看文件
- umount 卸载 ,后面加挂载目录(/mnt/cdrom)或设备文件名(/dev/sr0)都可以
关机重启命令:
shutdown命令:
shutdown [选项] 时间
会自动断开服务,在关机和重启之前
服务器最好不要关机,只能重启
-c :取消前一个关机命令
-h :关机
-r :重启
重启:reboot init 6
关机:halt pweroff init 0
系统运行级别:
runlevel命令:查看运行级别
- 第一个数字是前一个运行级别 第二个是当前的级别
在/etc/systemd下面了
- 0 关机
- 1 单用户,root登陆
- 2 不完全多用户,不含NFS服务(network file system 实现两个linux系统的文件共享)
- 3 完全 多用户
- 4 未分配
- 5 图形界面 X大写的X表示图形环境
- 6 重启
logout:退出登录
- 维护人员,登陆后一定要logout,小心使得万年船
vim编辑器:
三种模式:
- insert插入模式 对文件内容的改变 按下Esc退到命令模式
- 编辑模式 对vim编辑效果的设置,比方说加上行号
- 命令模式 前面两种模式的中转站
- 按下 a/i/o进入Insert模式
- 按下 :进入编辑模式
简单流程:
- vi + filename 进入命令模式,在命令模式下输入 a/i/o 进入插入模式
- 在insert模式下(下面会出现Insert符号),输入信息
- 编辑完成后 按Esc键,从insert模式下退到命令模式
- 输入 :从命令模进入到编辑模式
- 输入wq,保存并退出
- cat 查看文件,发现编辑成功
rpm文件安装包命令:
别用yum 卸载
cpio提取文件命令:
当我的某个命令文件比方所ls,他所在的目录/bin/ls,被我不小心删掉了,那么要么重装linux系统,全部命令覆盖重装,要么就用到了文件提取。只要知道这个ls命令在那个rpm包里面,就可以单独把这个文件提取出来。
流程
- rpm -qf /bin/ls 查询ls命令是哪个rpm包
- 提取相应rpm包中的ls命令到当前目录的/bin/ls下
- cp /root/bin/ls /bin/ 把ls命令复制到/bin/目录,修复文件丢失。
格式:rpm2(这里的2通假字,同to)cpio +rpm包的绝对路径(/mnt/cd/Packages/包名) |(管道符) cpio -id
+.提取的文件名(前面的 . 表示存到当前目录下 )
- rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./user/bin/ls
命令
rpm -ql -qf
yum在线管理: 解决包的依赖性
- 网络配置 vi /etc/sysconfig/network-scripts/ifcfg-xxx
- service network restart
- ONBOOT:yes
- ip 子网掩码 网关 DNS 缺一不可
- /etc/yum.repos.d
yum常用命令:
- yum list 查询所有可用软件
- yum search +关键字 搜索相关包(包名,不是包全名)
yum -y install +包名
- -y 自动回答yes
- install 安装
- yum -y install gcc
yum -y update + 包名 :更新
- 注意要是不加包名,默认升级所有,包括linux内核,但是内核升级完先需要一定都配置。所以新手一定要记得加上包名。
- yum -y remove + 包名 卸载
- 用yum卸载会把包所依赖的全都卸载掉,但是这些包会被别的包依赖。所以用yum 卸载很危险,可能会导致系统崩溃。
- yum grouplist:组查询
- yum groupinstall +包名 要是包名有空格,要用引号包起来。
- yum groupremove:移除。
yum光盘yum源搭建:
挂载光盘mount /dev/sr0 .mnt/cdrom
让其他网络yum源失效:进入yum原配置文件 /etc/yum.repos.d/,把除了CentOS-Media.repo文件外,其他文件全都改个名字(把后缀名全都改掉,只要不是.repo后缀,系统就无法识别),让系统无法识别,无路可去自然就去关盘中找资源啦。
让光盘yum源生效:
进入光盘.repo我那件,vim打开,把baseurl(表示yum资源的地址,其他网络yum源的baseurl的值为http://官方yum源服务器地址)改为file://(三条杠)+光盘文件挂载点(/mnt/cd/),把另外两个地址给注释掉(#号注释)
千万注意:一些配置文件有着严格的格式要求,当你改动后,发现报错了。就要知道可能是我的修改导致文件的格式出现错误。
源码包,安装在人为指定的路径下(没有规规矩矩的放在指定的地方),所以要启动源码包下的服务的时候,需要文件的操作命令的绝对路径,xxx/xxx/xxx.start ,才可以启动。
RPM包就很乖了,他的安装路径基本上都是固定的,系统知道这个文件会被放在哪里,所以有一个快捷服务关岭命令service scrvice +相应服务+相应命令(start等)