目前已接触的linux常用命令
注意:本文中的\为转义符,用于不被md语法转换格式
Git:
Git安装:
可以先去github仓库看git有哪些版本
获取到下载链接后,直接从服务器上获取,如:
wget https://codeload.github.com/git/git/tar.gz/v2.13.0-rc1
下载完后是一个没有后缀的文件,重命名成.tar.gz结尾的形式即可,如:
mv v2.13.0-rc1 v2.13.0-rc1.tar.gz
解压
tar -zxvf v2.13.0-rc1.tar.gz
进入解压后的目录
cd git-2.13.0-rc1
安装源码前先下载依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
删除下载依赖时自动下载的git(因为版本可能比较旧)
yum remove git
编译
make prefix=/usr/local/git all
安装(路径可自定义)
make prefix=/usr/local/git install
配置环境变量,加上安装路径的bin目录,手工生效环境变量
vim /etc/profile
PATH=$PATH:/usr/local/git/bin
export PATH
source /etc/profile
验证是否成功安装
git --version
如果报没有权限,那一般是文件没有执行权限,给文件授权即可(此处我的git安在了/usr/local下)
chmod -R u+x /usr/local/git/bin
Git安装后,新建一个空文件夹,用于初始化及作为存放代码的仓库
mkdir
文件夹名:在当前目录下新建一个文件夹;
mkdir /路径/文件夹名
:在指定路径下新建一个文件夹;
mkdir -p /路径/文件夹名
:若指定目录及指定文件夹均不存在会递归创建路径及文件夹;
git init
:初始化当前文件夹为git仓库;
git remote add origin 网址
:添加远程仓库;
git pull origin master
:从远程仓库的master分支上拉取更新;
git pull origin develop:develop
:表示从远程的develop分支拉取到本地develop分支上,如果本地没有分支,不加:develop是可以的;
git reset --hard HEAD^
:回退代码到上一个版本(如果修改了什么配置文件,而远程恰好提交了对配置文件的修改,内容影响小的情况下可直接回退上一个版本,拉取完后重新修改配置文件即可)
不小心建了本地分支,想删掉,
git branch
查看有哪些分支git checkout 分支名
切换到其他分支git branch -D 想删的分支
- 此时本地不想要的分支已经删掉了
- 假如要删不小心推上去的远程分支,先查看远程分支
git branch -r
- 删除远程分支
git push origin --delete 想删分支名
看本地仓库使用的哪个地址
git remote get-url --all origin
vi
或者vim
进入某文件的编辑
shift+G
(非大写的g,即开启Capslock后按G是无效的):跳至最后一行;
ctrl+f
:往前看;
i
或者a
或者o
:进入插入模式;
esc
:退出插入模式(必须退出插入模式才能退出编辑);
:q
:退出编辑;
:w
:保存并退出编辑;
:wq
:强制保存并退出编辑;
:q!
:不保存变更强制退出编辑;
/字符串
从尾到头查找匹配的字符串,shift+#
到另一个匹配项
路径切换cd:
cd
进入用户主目录;
cd ~
进入用户主目录;
cd -
返回进入此目录之前所在的目录;
cd ..
返回上级目录(若当前目录为“/“,则执行完后还在“/";其中".."为上级目录的意思);
cd ../..
返回上两级目录;cd !$ 把上个命令的参数作为cd参数使用;
pwd
显示当前目录的完整路径;
cd过程中按tab
可自动补全唯一文件(或文件夹)的完整名称,如code,输如cd ./co按tab可补全为cd ./code;
其余文件操作命令
tail -f 文件名(或者/路径/文件名)
:动态访问,多用于查看正在打印的日志;
tail -f xxxx.out -n101
:以一次性查看101行的形式动态访问;
ctrl+c
:退出当前命令(比如正在使用tail -f动态查看日志,使用这个即可退出);
ll
:展示当前目录下的所有文件及文件详情(不展示隐藏文件及隐藏文件夹),它实际上是ls -l的一个别名。Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便;
mkdir -p /目录/目录
:若要创建的目录的前置目录不存在,则递归创建相应的目录;
复制cp 目标文件名 目标完整路径:
cp -r
会把所有source当作普通文件(regular文件);
而cp -R
对特殊文件(管道文件,块设备文件,字符设备文件)会进行创建操作,而不是拷贝。
cp -a
该选项通常在拷贝目录时使用(cp -p也行)。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
详细如下:
cp (复制档案或目录)
cp [-adfilprsu] 来源档(source) 目的档(destination)
cp [options] source1 source2 source3 …. directory
参数:
-a
:相当于 -pdr 的意思;
-d
:若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-f
:为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而是强制复制;
-i
:若目的档(destination)已经存在时,在覆盖时会先询问是否真的执行覆盖!
-l
:进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
-p
:连同档案的属性一起复制过去,而非使用预设属性;
-r
:递归持续复制,用于目录的复制行为;
-s
:复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
-u
:若 destination 比 source 旧才更新 destination
删除rm -rf:
rm -rf
命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉
脚本或者命令执行
sh 脚本(或者/路径/脚本名)
:执行脚本,只在当前shell窗口中执行,其中的变量不会加载到环境中,如果执行过程中断开SSH连接会终止执行,而且用sh执行脚本时,是会将环境中的变量加载进来的;
source(或者一个点.) 脚本(或者/路径/脚本名)
:执行脚本会把脚本文件中的变量定义加载到环境中(所以一般就用来生效一下环境变量),使用echo $变量名 甚至可以打印变量值,不太好;
./xxx.sh 脚本(或者/路径/脚本名)
:也可以执行脚本,与sh几乎无差别
nohup 命令(或者脚本)
:nohup是no hang up的缩写,不挂断的运行,和用户终端没有关系,例如我们断开SSH连接都不会影响它的运行;
&
:是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出;
nohup COMMAND &
这样就能使命令永久的在后台执行(除非自己杀进程、或者执行停止命令、或者机器断电、机器故障、机器系统崩溃、机器内存溢出);
另外,sh执行脚本可以没有执行标志,可以不用在脚本第一行写上#/bin/sh,使用./xxx.sh执行则是调用脚本第一行指定的shell去解释执行,缺省为sh,就是bsh;
系统级
uname -a
完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统
cat /etc/redhat-release
查看当前系统版本的详细信息名称等信息
date
看日期时间
date -s "2022-01-01 01:01:00"
设置时间
ntpdate cn.pool.ntp.org
从该地址同步时间
hwclock -w
将当前时间写入bios防止重启失效
hwclock -r
读取bios里的时间
uname -a
可以显示设备的系统信息
ifconfig
可以显示网关相关信息(一般看eth0的)
df -h
可以显示磁盘空间相关信息
du -h
可以统计当前目录的文件夹占用空间(如果直接在根目录执行可能占用较多cpu去统计)
free -h
可以显示内存占用情况
ps aux --sort -rss
按cpu占用从高到低查看进程
lsof -i:端口号
如lsof -i:22查看22端口的占用情况,看哪个进程在使用
top
动态查看各进程占用内存的情况,其中:
- PID - 进程标示号
- USER - 进程所有者
- PR - 进程优先级
- NI - 进程优先级别数值
- VIRT - 进程占用的虚拟内存值
- RES - 进程占用的物理内存值
- SHR - 进程使用的共享内存值
- S - 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死
- %CPU - 进程占用的CPU使用率
- %MEM - 进程占用的物理内存百分比
- TIME+ - 进程启动后占用的总的CPU时间
- Command - 进程启动的启动命令名称
sync
保存缓存防止磁盘内容丢失
echo 3 > /proc/sys/vm/drop_caches
同步缓存到磁盘后可安全地清除缓存所占用的内存
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
防火墙:
防火墙状态:systemctl status firewalld.service
排查某服务启动错误详情可加-l
参数:systemctl status firewalld -l
Active: inactive (dead)/active(running)
关闭firewall:systemctl stop firewalld.service
重启:systemctl restart firewalld.service
启动:systemctl start firewalld.service
禁止firewall开机启动:systemctl disable firewalld.service
设置开机启用:systemctl enable firewalld.service
重新加载服务:systemctl daemon-reload
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看已经开放的端口:firewall-cmd --list-ports
列出所有开放的端口信息: firewall-cmd --list-all
开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
移除端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
命令含义:
- –zone #作用域
- –add-port=80/tcp #添加端口,格式为:端口/通讯协议
- –permanent #永久生效,没有此参数重启后失效
测试指定ip或网址是否通,使用ping ip或网址
来测试
若已安装telnet,可以telnet ip prot
来测试某服务是否通(常用于服务和本机不在一台物理设备上的情况)
启了服务的另一台物理设备,也可以使用netstat -an|grep port
来检查端口是否已被使用(端口没有被使用的话其他设备用telnet
是怎样都访问不到的)
ps -ef|grep 进程名称
:可以查看带有指定进程名的进程信息,如ps -ef|grep java
kill -9 进程号1 进程号2 进程号n
:可配合上一条查看进程的命令杀死指定进程号的进程
chmod options 文件名
,授权命令,rwx,读写执行,r=4,w=2,x=1,快捷授予权限为chmod 777 文件名,其中777=rwxrwxrwx,因为4+2+1=7,chmod u+x 文件名 表示给当前登陆的用户授予执行权限
tar -zxvf(或者-xvf) 文件名.tar.gz
:用于解压.tar.gz结尾的压缩包,
tar -cvf 文件名.后缀 /路径
:用于将指定路径(即文件夹)压缩成指定后缀的压缩包
zip -r 文件名.zip /路径
:用于将指定路径的所有文件递归地压缩打包成zip包
unzip 文件名.zip
:用于解压zip包