我的linux操作命令总结,记录常用linux操作命令
- 发表于:2019-11-16 13:49
- 阅读(2588)
平常本地开发项目使用的系统基本都是window系统,而且都是图形化操作,非常方便,window也是越做越好了,项目部署到生产环境一般都是选择linux系统(当然window server系列也可以),而linux一般则选择centOS居多,这里记录一下linux常用命令,以免老是过几天就忘了,后续不断补充。
(1)常用命令
ll 或 ls:查看文件目录列表,包含隐藏文件ll -a或ls -a
mkdir 目录名:创建目录
cd 目录名:进入目录
cd -:返回上一次目录
cd ~:进到当前用户HOME目录
touch 文件名:创建文件
vim 文件名:使用vi或vim修改文件,如果文件不存在则创建
rm -rf 目录名:删除目录
rm -f 文件名:删除文件
free -m:查看当前内存使用情况,还剩多少内存
df -h:查看当前磁盘使用情况,是否满了,达到100%
sudo dmesg -T | grep "(java)":查看项目被关掉的记录,由于内存溢出而导致项目老是自动挂了
nohup java -jar demo-1.0.0.jar &:启动demo-1.0.0.jar springboot项目,并使项目在后台不挂断运行,nohup 并不支持后台运行,它是忽略内部的挂断信号,不挂断运行,把 nohup与& 结合在一起,这样就可以不挂断的永久在后台执行,如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中
tail -f nohup.out:跟踪查看nohup生成的nohup.out日志文件,一般用于调试bug和追踪问题,退出tail命令的话,直接使用快捷键【Ctrl】+【C】
cat nginx.conf:cat直接显示文件内容(而不用vim打开文件),后面也是跟随要显示内容的文件名,这里是显示nginx配置文件的内容
ps -ef|grep java:输出当前正在运行的jar,查看所有java进程,ps命令将某个进程显示出来,grep命令是查找(grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户),中间的|是管道命令 是指ps命令与grep同时执行,java也可以更改成项目名称,就可以查询到指定项目的进程是否存在,如:ps -ef|grep demo
kill -9 1234:强制杀死该进程,默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理
ifconfig 或 ip addr:一般用于虚拟机服务器查看本机ip地址
halt:立刻关机
reboot:重启系统
cd -:返回上一次目录,来回切换
logout:注销退出当前登录用户
su root:切换用户,默认切换到root用户登录,需要输入当前用户登录密码
sudo 其他命令:使用root用户执行其他命令,需要输入root用户密码
exit:退出root用户,退出当前登录的用户,逐层退出,到最顶层,则相当于logout
mkdir 目录名:创建一个目录,创建一个文件夹
cp 源文件名 目标文件名:当前目录下复制文件
mv 源文件 目标目录:移动或剪切文件
chmod 777 目录名或文件名:修改目录或文件权限,777是最大权限
curl https://www.guppies.cn:在终端访问网址,也可以下载文件,上传文件
more 文件名:翻页查看文件,q退出查看
sudo netstat -nultp:查看当前所有正在占用的端口
sudo netstat -anp | grep 8080:查看80端口是否已被占用,被谁占用
ss -ntl:查看端口是否占用
ss -nt|grep :80:查看80端口是否占用
参考:
文件权限
修改权限:Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。
Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。
Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
Linux上通常使用chmod命令对文件的权限进行设置和更改。
1、权限设定字串,详细格式如下 :
[ugoa…][[+-=][rwxX]…][,…]
- [ugoa…]:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。
- [+-=]:+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。
- [rwxX]:r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
例如:
# 设置所有用户可读取文件 a.conf
chmod ugo+r a.conf
# 结果等同于
chmod a+r a.conf
# 设置 c.sh 只有 拥有者可以读写及执行
chmod u+rwx c.sh
# 设置文件 a.conf 与 b.xml 权限为拥有者与其所属同一个群组 可读写,其它组可读不可写
chmod a+r,ug+w,o-w a.conf b.xml
# 设置当前目录下的所有档案与子目录皆设为任何人可读写
# -R:以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更
chmod -R a+rw *
2、数字权限使用格式
我们规定 数字 4 、2 和 1表示读、写、执行权限。即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来。
例如:
# 若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为
rwx = 4 + 2 + 1 = 7
# 若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为
rw = 4 + 2 = 6
# 若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为
rx = 4 +1 = 5
每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。例如:
# 设置所有人可以读写及执行
chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file 或 chmod a=rwx file)
# 设置拥有者可读写,其他人不可读写执行
chmod 600 file (等价于 chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )
常用权限:
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
0600表示分配给文件的权限:
一共四位数,第一位数表示gid/uid一般不用,剩下三位分别表示owner,group,other的权限
每个数可以转换为三位二进制数,分别表示rwx(读,写,执行)权限,为1表示有权限,0无权限
如6是上面第二个数,可以表示为二进制数110,表示owner有读,写权限,无执行权限
参考:
Linux权限详解
linux chmod 0777 的 0是啥
3、更改文件拥有者(chown命令)
linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。
# 设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom
chown tom:users file d.key e.scrt
# 设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James
chown -R James:users *
参考:Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)
(2)防火墙
CentOS 6:
1、service方式:
开启防火墙:service iptables start
关闭防火墙:service iptables stop
查看防火墙状态:service iptables status
2、iptables方式:
先进到init.d目录
cd /etc/init.d/
再执行命令
重启防火墙:/etc/init.d/iptables restart
关闭防火墙:/etc/init.d/iptables stop
查看防火墙状态:/etc/init.d/iptables status
CentOS 7:
开启防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
查看防火墙状态:systemctl status firewalld
关闭开机启动:systemctl disable firewalld
开启开机启动:systemctl enable firewalld
(3)Vim命令
vim nginx.conf 或 vi nginx.conf:使用vim(vi)打开文件,编辑文件,这里是打开nginx配置文件,编辑nginx配置文件,这里nginx.conf只是一个例子,vim(vi)后面跟随要打开文件的文件名,其实vim也是挺好用的,也有字体高亮,还有很多快捷键,如果熟练运用的话,效率会很高。
gg:跳到文件内容开头
G:跳到文件内容结尾
关于linux的常用命令就先记录这么多,以后再补充,如果不对的地方欢迎指出~O(∩_∩)O哈哈~
下一篇:常用eclipse快捷键
相关推荐
-
mac安装subversion,并使用svn命令检出服务器上的代码库项目
mac安装svn只要通过Homebrew安装即可,不需要下载额外的安装包手动安装,Homebrew类似一个软件库,我们可以通过brew命令实现一键下载并安装我们所需要的常用软件。
-
Java如何获取泛型类T的Class
我们平时在封装接口或抽象类的时候经常会用到Java的泛型,经常会在传入一个泛型类T,然后封装一些抽象的方法,泛型的好处就是在编译的时候检查类型安全,并且所有的强制类型转换都是隐式和自动的,这样可以提高代码的通用性。但是我们有时候需要获取泛型类的Class,那可以如何获取到呢?
-
springboot项目事务报错:Transaction synchronization is not active
这几天在使用spring声明式事务的时候突然报了一个错误:Transaction synchronization is not active,之前使用的都是好好的,为什么这次就不行了呢?不就是加一个 @Transactional 而已嘛???
-
mysql应该如何在where语句中添加if语句进行条件判断?where if 语句应该如何使用
我们在平时的项目开发中,有时候会遇到复杂一点的需求,需要我们手动编写复杂的SQL语句,并且有时候需要根据每条表记录的实际情况进行判断,根据每条记录动态添加不同的where条件,这个时候我们就可以在where语句中使用if语句进行条件判断,那么where if应该如何正确使用呢?
-
关于websocket多节点分布式问题的解决方案
websocket是一种在单个TCP连接上进行双全工通信的协议,使用websocket,我们可以实现服务端主动向各个订阅消息通道的客户端推送消息。这点比传统的http轮询请求要更好一点,避免一些无用的请求,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
-
mac如何把文件压缩成tar、zip以及如何解压tar、zip?
有时候我们需要把文件压缩成一个tar文件或zip文件,发送给别人,那么在macos系统应该如何压缩和解压缩呢?
-
openjdk和jdk有什么区别,应该如何选择?
我们一开始学习java的时候,安装的都是从sun官网或oracle官网下载的jdk安装包,但其实还有另外一个来源可以获取到jdk安装包,那就是openjdk,它和jdk基本一样,推荐使用openjdk。
-
如果git仓库发生变更,IDEA如何直接修改git远程仓库地址?
有时候我们整理远程仓库代码的时候,会修改远程仓库的名称,或者所属分组,这个时候在IDEA由于还是使用原先拉取的旧仓库地址,导致本地代码会提交不了,也更新不了远程最新代码,那么这个时候要如何修改IDEA当前的git远程仓库地址呢?如何无缝修改,修改完之后就能和原来一样更新提交,并且以前的提交记录也保留呢?
-
微信公众号自定义菜单报错:no permission to use weapp in menu rid:xxxxxxx
昨晚公司系统添加微信公众号菜单突然报错:{"errcode":45064,"errmsg":"no permission to use weapp in menu rid: 60311f70-0736ff08-29143906"}
-
Java如何使用stream流对List列表数据进行自定义排序
我们一般做排序功能都是通过在mysql数据库中的表中定义好排序字段,然后使用升序或降序来进行排序,复杂一点的话就配合多个排序字段进行排序,但是如果碰到那种无法使用表的字段进行排序的情况,我们需要先从数据库中取出列表数据,然后再通过业务代码对列表进行排序,这个时候我们就可以使用redis或Java的stream流。
-
微信企业付款到零钱报错:此请求可能存在风险,已被微信拦截
具体错误信息:com.github.binarywang.wxpay.exception.WxPayException: 返回代码:[SUCCESS],返回信息:[支付失败],结果代码:[FAIL],错误代码:[NO_AUTH],错误详情:[此请求可能存在风险,已被微信拦截。]
-
springboot项目使用@Transactional注解如何避免长事务问题
在springboot项目中,我们开启事务是非常简单的,使用注解的方式就是在需要开启事务的方法上添加@Transactional,这样就可以实现这个方法里面的所有操作和调用方法的操作都绑定在一个事务上面,要么全部一起执行成功,要么全部一起执行失败,如果其中有某个地方抛了异常,则整个方法涉及的事务操作都会回滚,但是如果随意滥用@Transactional,又有可能引发长事务问题,导致数据库死锁、数据库连接池占满等问题。
-
css实现“展开阅读全文”功能
最近发现很多博客网站,资讯网站喜欢把资讯博文,内容等这些大文本的信息在页面显示的时候都会有个“展开阅读全文”的按钮,点击这个按钮即可展开显示所有的内容,不然一开始就显示那么长的篇幅相对来说既不美观,又对用户体验不好。现在就让我来仿照这类网站实现一个“展开阅读全文”功能。这里主要用到的前端技术是html+jquery+css,只做展开功能,没做收起功能(收起功能没必要吧,谁会去收起呀???)。
-
关于编程中面向对象的理解,什么是面向对象
面向对象设计相对于结构化程序设计可以说是一种更优秀的程序设计方法。它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在软件系统构造中尽可能运用人类的自然思维方式,强调直接以现实世界中的事物(即对象)为中心来思考,认识问题。
-
我的linux操作命令总结,记录常用linux操作命令
平常本地开发项目使用的系统基本都是window系统,而且都是图形化操作,非常方便,window也是越做越好了,项目部署到生产环境一般都是选择linux系统(当然window server系列也可以),而linux一般则选择centOS居多,这里记录一下linux常用命令,以免老是过几天就忘了,后续不断补充。