Linux - 常用命令
Linux系统文件结构
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
/tmp:
这个目录是用来存放一些临时文件的。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
基本命令
开关机命令
reboot 命令用于重启机器 poweroff 用于关闭系统
获取IP地址
ip addr ifconfig
ssh远程连接
ssh 用户名@ip ssh -p 端口 用户名@ip
用户
创建普通用户
useradd 用户名
更改用户密码
passwd 用户名
切换用户
root切换普通用户不需要密码,普通用户之间切换需要密码
su - 用户名 # -代表用户环境变量完全切换
查看linux用户的id信息
id 用户名
查看存放用户信息的文件
/etc/passwd
删除用户
userdel -rf 用户名
管理员权限 sudo命令
配置sudo命令 用visudo命令,打开配置文件,添加如下配置 ## Allow root to run any commands anywhere root ALL=(ALL) ALL 用户名 ALL=(ALL) ALL
在要执行的命令前添加sudo执行命令
权限
文件的权限分三类人
user 属主 group 属组 other 其他人
一个文件有三种权限,读、写、可执行
r read 读 4 w write 写 2 x exec 可执行 1
查看一个文件的权限信息
ls -l
-rw-r--r--. 1 root root 0 Oct 27 16:36 1.txt rw- :属主权限 r-- :属组权限 r-- :其他人权限 root :创建者 root :用户组 0 Oct 27 16:36 : 修改时间 1.txt : 文件名
修改文件权限
chmod u/g/o+r/w/x filename chmod u/g/o-/w/x filename
修改文件属主
chown 用户 filename
修改文件属组
chgrp 属组 filename
将用户加入某个组
usermod -G 组名 用户名
软连接,快捷方式
ln -s 源文件绝对路径 快捷方式绝对路径
目录相关
目录符号
符号 | 描述 |
---|---|
. | 当前目录 |
… | 上一级目录 |
- | 上一次工作目录 |
~ | 当前用户的家目录 |
/ | 根目录 |
目录操作
查看当前目录下所有文件内容
ls
查看隐藏文件
ls -a
以列表方式显示文件的详细信息
ls -l
以列表方式显示人性化的文件详细信息
ls -lh
查看当前所在目录
pwd
切换文件夹
cd /opt/first
创建目录
mkdir a
递归创建目录
mkdir -p a/b/c
删除空目录
rmdir a
强制删除
rm -rf
文件相关
创建文件,如果文件不存在,创建文件
linux中文件的后缀没有意义,只是提示作用
touch 1.txt
删除指定文件
rm 1.txt
查看文件内容
全部查看 cat 1.txt 显示行号 cat -n 1.txt 在每行结尾显示$符 cat -E 1.txt 追加文字到文件 cat >> /opt/1.txt << EOF 11 22 EOF
more:用于查看内容较多的文本,more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
more 1.txt 空格翻页,b键上一页,回车向下读取内容
head、tail
head 显示文件前几行,默认为10 head -2 1.txt tail 显示文件后几行,默认为10 tail -2 1.txt
chattr
给文件上锁、只能写入无法删除
chattr +a 1.txt chattr -a 1.txt
lsattr
查看文件隐藏属性
lsattr 1.txt
chattr
设置文件特殊权限的命令
vim
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
简单使用
1、使用vi或vim打开文件弹出命令模式
vim 1.txt
2、在命令模式中输入a或i进入编辑模式
3、编辑结束后按esc返回命令模式
4、在命令模式中输入wq!保存退出
命令模式操作
:q! 强制退出 :wq! 强制写入退出 :set nu 显示行号 :数字 跳转到数字行 :! command 暂时离开vim指令模式,执行command的结果 例如 :!ip a 临时看一下ip信息,然后可以回到vim :set nu 显示vim行号 :set nonu 取消行号 随时按下esc可以退出底线命令模式
移动光标
w 移动到下一个单词 b 移动到上一个单词 0 移动到本行开头 $ 移动到本行结尾 H 移动到屏幕首行 M 移动到屏幕中间一行 L 移动到屏幕尾行 gg 移动到文档首行 G 移动到文档尾行 ctrl + f 下一页 ctrl + b 上一页 . 移动到上一次修改行 按键移动 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键(→) 光标向右移动一个字符 向下移动5行 5j 向右移动10字符 10l
查找
/chaoge 在整篇文档中搜索chaoge字符串向下查找 ?chaoge 在整篇文档中搜索chaoge字符串向上查找 * 查找整个文档、匹配光标所在的所有单词,n查找下一处N查找上一处 # 查找整个文档、匹配光标所在的所有单词,按下n查找下一处,N上一处 gd 找到光标所在单词匹配的单词,并停留在飞注释的第一个匹配上 % 找到括号另一半
复制、删除、黏贴
yy 拷贝光标所在行 dd 删除光标所在行 D 删除当前光标到行尾的内容 dG 删除当前行到文档尾部的内容 p 粘贴yy所复制的内容 x 删除光标所在的字符 u 撤销上一步的操作 3yy 拷贝光标所在的3行 5dd 删除光标所在5行
tar
参数: -z 调用gzip压缩 -x 解包 -c 打包 -v 显示过程 -f 必须写参数结尾,指定tar包的名字
打包
tar -cvf 压缩文件名.tar 被压缩文件
解包
tar -xvf 压缩文件名.tar 解包路径
压缩
tar -zcvf 压缩文件名.tar.gz 被压缩文件
解压
tar -zxvf 压缩文件名.tar.gz 解压路径
查看环境变量
echo $PATH
Linux中的环境变量由目录组成,由:分割
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
时间
date
显示当前时间和设置系统时间
-d --date=string 显示指定的时间,而不是当前时间 以年-月-日显示当前时间 date +"%Y-%m-%d" 以年-月-日 时分秒 显示当前时间 date +"%Y-%m-%d %T" 在Linux下系统时间和硬件时间不会自动同步,在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。 硬件时间的运行,是靠Bios电池来运行,而系统时间是用CPU tick来维持的。 在系统开机时候,会从Bios中获取硬件时间,设置为系统时间 硬件始终的查看 [ ~ 10:19:04]#hwclock 2018年08月27日 星期一 10时23分03秒 -0.528004 秒
同步系统时间和硬件时间,可以用hwclock命令
//以系统时间为基准,修改硬件时间 [ ~ 10:29:07]#hwclock -w //以硬件时间为基准,修改系统时间 [ ~ 10:29:21]#hwclock -s
cal
日历命令
[_0_16_centos first]# cal November 2019 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
ntp
关于时间服务器的配置文件,有如下几种
/bin/date 用于 Linux 时间 (软件时钟) 的修改与显示的指令; /sbin/hwclock 用于 BIOS 时钟 (硬件时钟) 的修改与显示的指令。 这是一个 root 才能执行的指令,因为 Linux 系统 上面 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,还需要使用 hwclock 才能将修改过 后的时间写入 BIOS 当中! /usr/sbin/ntpd: 主要提供 NTP 服务的程序啰!配置文件为 /etc/ntp.conf /usr/sbin/ntpdate: 用于客户端的时间校正,如果你没有要启用 NTP 而仅想要使用 NTP Client 功能的话,那么只会 用到这个指令而已! 只用作客户端更新时间 ntpdate -u ntp.aliyun.com
wget
命令用于在终端下载网络文件
wget [参数] 下载地址 wget -r -p http://www.baidu.com
echo
echo命令用于在终端输出字符串或变量提取后的值,格式是“echo 【字符串|$变量】
默认将内容打印 echo "xxx" 打印PATH的值 echo $PATH 其他特殊符号 >> 追加文字到文件 > 覆盖文字到文件 < 输入 << 将输入结果输入 echo "x" > 1.txt echo "xx" >> 1.txt echo >> 1.txt << EOF
复制、移动、删除
复制
复制 cp xx.txt first 复制后改名 cp xx.txt first/x1.txt 递归复制 cp -r 保持文件属性不变 cp -p
移动
mv 1.txt /tmp
删除
rm 1.txt rm -i 删除时需要确认 rm -f 强制删除 rm -r 递归删除
查找
完整格式 find 目录 类型 名字 参数 按名字查找 find -name 1.txt 按类型查找 find -type f 按类型查找参数: b 块设备文件 d 目录 c 字符设备文件 p 管道文件 i 符号链接文件 f 普通文件 s socket文件 通配符 以什么结尾 find -name "*.txt" 以什么开头 find -name "s*"
管道命令
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
ls /opt|find -name "*txt"
grep
(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
语法: grep [参数] [--color=auto] [字符串] filename 参数: i 忽略大小写 n 输出行号 v 反选 color = auto 给关键词添加颜色 cat /etc/passwd |grep ‘^root‘ --color=auto -n
别名
查看系统别名 alias 设置别名 alias rm = "xxxxx" 取消别名 unalias rm
which
命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which ls
scp
scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法: scp 【可选参数】 本地源文件 远程文件标记 参数: -r 递归复制 -v 详细方式输出 -q 不显示传输进度条 -c 允许压缩 scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
du
du会显示指定的目录或文件所占用的磁盘空间。
语法: du 【参数】【文件或目录】 参数: -s 显示总计 -h 以k、M、G为单位显示 du -sh /home
top
命令用于动态地监视进程活动与系统负载等信息
第一行 (uptime) 系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载 第二行:进程信息 进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数 第三行:cpu信息 1.5 us:用户空间所占CPU百分比 0.9 sy:内核空间占用CPU百分比 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比 97.5 id:空闲CPU百分比 0.2 wa:等待输入输出的CPU时间百分比 0.0 hi:硬件CPU中断占用百分比 0.0 si:软中断占用百分比 0.0 st:虚拟机占用百分比 第四行:内存信息(与第五行的信息类似与free命令) total:物理内存总量 used:已使用的内存总量 free:空闲的内存总量(free+used=total) buffers:用作内核缓存的内存量 第五行:swap信息 total:交换分区总量 used:已使用的交换分区总量 free:空闲交换区总量 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入
清屏
clear
whoami
whoami 查看当前目录
主机名
hostname 查看主机名 set-hostname 新的主机名
yum
在linux下安装各种软件
yum install vim -y #安装vim软件,且自动输入yes
更新yum
yum update
tail
tail -f filename #持续刷新文件内容的变化
进程
查看进程
ps aux 或者 ps -ef #查看机器所有进程信息 ps aux | grep "vim" #过滤出和vim有关的进程
杀死进程
kill -9 进程id pkill -9 进程名
查看内存信息
free
查看磁盘信息
fdisk
磁盘使用率
df
查看网络端口
netstat -tunlp 参数: netstat [选项] -t或--tcp:显示TCP传输协议的连线状况; -u或--udp:显示UDP传输协议的连线状况; -n或--numeric:直接使用ip地址,而不通过域名服务器; -l或--listening:显示监控中的服务器的Socket; -p或--programs:显示正在使用Socket的程序识别码和程序名称; -a或--all:显示所有连线中的Socket;
防火墙
关闭防火墙的命令
systemctl stop firewalld #停止防火墙服务 systemctl disable firewalld #停止防火墙开机自启 iptables -F #清空防火墙规则
定时任务
检查定时任务列表
crontab -l
设置定时任务
crontab -e
分 时 日 月 周 执行命令的绝对路径 * * * * * /usr/bin/echo "111"
yum源
centos的默认yum仓库路径是 /etc/yum.repos.d ,在这目录下,第一层文件夹中的repo文件会识别为仓库文件
配置yum源
1.获取阿里云的yum源 打开网址https://opsx.alibaba.com/mirror 2.找到第一个仓库 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3.下载第二个仓库 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 4.生成yum缓存,加速以后下载 yum makecache
SimpleHTTPServer
python -m SimpleHTTPServer 8090