Linux 命令

* 按照时间排序:

t 修改时间  u 访问时间  c 状态更改时间

ll -t  倒叙(默认倒叙)【ll -sh -t 可以自由组合,使用人性化方式展示】
ll -tr  正序

* win 系统下查看端口:

netstat -ano

* linux 查看端口占用:

lsof -i  【比较全,可以直接看到端口和进程号,kill 可以杀,直接指定端口:lsof -i:13579 ,然后直接 kill 】
netstat -tuln(或者:ss -tuln)【查看服务器都开放了哪些端口】

* 查看指定端口占用程序进程号

netstat -tunlp | grep 端口号

* 不同服务器之间互传文件的方法:(默认使用 22 端口,如需指定端口,scp -P 后面加大写的 -P xxx )
(1)推文件给别人 ↑:

scp test.sql root@目标ip:/data/

(2)主动拉取文件 ↓:

scp -r root@目标ip:/data/test.sql /data/

* 使用 cat 命令或者其他任何命令,想查看前几行数据,不要全部出来,写法如下:

cat xx.txt | head -n 5  //5 表示只展示 5 行
ip addr | head -n 5  //只显示5行数据

* crontab 定时任务

* sudo crontab -l  //查看正在执行的任务列表( crontab 定时任务,需要在 root 权限下才可以看到)
* sudo crontab -e  //修改定时任务
/sbin/service crond status     //查看状态
/sbin/service crond start     //启动
/sbin/service crond stop      //停止
/sbin/service crond restart    //重启
/sbin/service crond reload    //重载

* 开启 linux 指定端口:

《centos7》
firewall-cmd --zone=public --query-port=8080/tcp(检查 8080 端口是否开启成功)
firewall-cmd --zone=public --add-port=8080/tcp --permanent(开启 8080 端口,--permanent 没有该参数重启后失效,开启后,要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=80/tcp --permanent(删除 8080 端口,--permanent 没有该参数重启后失效)
firewall-cmd --zone=public --add-port={xx,xx,xx}/tcp --permanent(一次性开放多个端口)
firewall-cmd --list-ports(查看开放的端口)【开启了某个端口,要查看前,需要重启防火墙才可以看到】
systemctl restart firewalld.service(重启 防火墙)
firewall-cmd --state (查看防火墙是否启动)

《ubuntu》
sudo ufw allow 8080/tcp(开启 8080 端口)
sudo ufw allow from ip地址 to any port 8080 proto tcp(只允许特定 ip 访问 8080 端口)
sudo ufw reload(刷新)
sudo ufw status verbose(查看确认)

注意:centos6以下用:

1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop

注意:centos 7 以上用:

安装:yum install firewalld
firewalld的基本使用:
启动: systemctl start firewalld
关闭: systemctl stop firewalld
重启: systemctl restart firewalld.service
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看开放的端口:firewall-cmd --list-ports
mysql 启动:systemctl start mysqld.service mysql 停止:systemctl stop mysqld.service mysql 设置开机启动:systemctl enable mysqld.service

* 压缩和解压操作

(1) 压缩操作【压缩:c  新  旧】 

tar -czvf 新文件名 旧文件名 -C 要放的路径【直接:tar -czvf 新文件名 旧文件名】

(2)解压操作【解压:x  旧  新】

tar  -xzvf    旧文件名    新文件名   -C  要放的路径【直接:tar  -xzvf    旧文件名】

(3)win 把文件夹压缩成 tar 后发送到 linux 上再解压

使用 7z 工具压缩成  .tar 压缩包,然后在 linux 使用:
tar -xf demo.tar   即可解压到当前目录

 “归档”是压缩的前一个步骤,有以下参数表示:

  -c 创建归档(一个没有压缩的文件包)文件包【大写的 -C 意思不同,是指解压到哪个目录的意思】

  -x 解压

  -t 不解压的情况下,查看压缩包里面的文件

  -v 显示解压的过程

  -f 指定解压后的文件名

  -z 、-j 两种压缩的方式

还有一个 zip 压缩;unzip 解压缩命令,比较简单:例子:

zip aa.zip aa  //就是压缩 aa 为 aa.zip
unzip aa.zip  //就是解压 aa
注意:zip -r aa.zip aa【-r 表示当前目录下所有的,aa.zip 压缩后的名字,aa 要压缩的文件】

* 查看 linux 版本【centos,ubuntu,等版本查看】

lsb_release -a

* linux 查看外网 ip

curl ifconfig.me

curl 命令的运用:

(1)linux 访问自己测试:

curl 127.0.0.1

(2)在 linux 里面模拟 post 请求:

curl http://127.0.0.1:7000/clothing/test/test6 -X POST -H "Content-type:application/json" -d '{"id":3}'

curl 请求路径 -X 请求方式 -H 参数提交方式 -d 请求数据   // -X POST -H 这几个参数必须大写

(3)模拟 get 请求:

curl http://127.0.0.1:7000/clothing/test/test6?name=haha  //请求参数不能是中文

* 测试当前所在机器是否能联通某台机器(ip后面接端口是“空格”隔开)

telnet ip 端口  //【例子:telnet 127.0.0.1 8080】

image

* 查看端口是否 ping 得通

wget ip:8080 (ip 是服务器的公网ip)
ping 通会出来信息,一直 Connecting to  ...  表示不通
【安装 wget 命令:yum -y install wget 】

* 查看ip 

ifconfig -a   ( win 系统使用:  ipconfig)

* 查看linux 上 tomcat 是否启动中

ps -ef | grep java  (出现很多数据,则启动中;只出现一行数据,表示关闭了)
kill -9 7010  (强制关闭 tomcat ,先使用查看命令可看到 端口号,再强制关闭)
启动 : ./startup.sh
关闭 : ./shutdown.sh

* 查看远程服务器公网 ip

curl ifconfig.me
或者:
curl cip.cc

[  xkill  :  强制关闭桌面图形界面窗口 ,运行后鼠标变成 “X”,直接点击桌面要关闭的图形界面窗口即可!类似 win 任务管理器强关 ]

* ctrl + u = ctrl + z 撤回

  在 vi 中,

    (1)直接 i 编写模式下,ctrl + u 就是撤回上一步,

    (2)esc 模式下,直接按 u 也是撤回

* ctrl + r = ctrl + y 恢复上一步(自测不成功,不明原因,待再测)

* :wq 保存退出

* :w = ctrl + s 保存不退出

* :q! 不保存退出

* 在 esc 模式下:

  dd  删除整行

  yy  复制整行

  pp 粘贴整行

* 给文件设置权限

  chmod   777   文件名

  权限表示     权限代码   所有者权限     群组权限       所有人权限
    -rw-------     600      读、写          -          -
    -rw-r–r--      644      读、写         读         读
    -rwx------     700      读、写、执行      -         -
    -rwxr-xr-x       755      读、写、执行      读、执行      读、执行
    -rwx–x--x     711      读、写、执行      执行        执行
    -rw-rw-rw-     666       读、写        读、写       读、写
    -rwxrwxrwx       777     读、写、执行         读、写、执行            读、写、执行

  -rwx rwx rwx 

  第一个 “-” 表示普通文件,rwx ,对应十进制 4 2 1,加起来就是 7 ,故最高权限是 777

  第一个 rwx 表示本用户(u),第二个 rwx 表示组用户(g),第三个 rwx 表示其他用户(o),分别表示3个权限

  另一种表示方式:

    chmod u+w test.log  //给本用户赋予写权限

    chmod g-x text.log  //将组用户的自信权限去除

    chmod o=r text.log  //给其他用户赋予读权限

    chmod a+x text.log  //给本用户,组用户,其他用户赋予执行权限【a  表示所有的】

* 改变“主”和“组”:

  -rw-r--r--. 1 root mongo3 0 Mar  3 21:59 b.text

  第一个 root 是所属主(本人)的意思;第一个 mongo3 是所属组(所在组)的意思

使用  chown 修改本人,使用 chgrp 修改组,使用 -R 命令是递归修改其下所有的。

*  创建文件

  touch   xxx

  touch 还可以用于修改文件时间:  

    touch   -d    "2019-08-08 10:10:10"   文件名

    -d  :  同时修改读取时间和修改时间

    -a  :  只修改 “读取时间”

    -m :  只修改 “修改时间”

* 判断这个文件是什么类型

file  xx

 * 上传下载命令

rz 上传
sz 下载

(在线安装命令:yum install lrzsz ,如果没有 yum 源的,可以使用:apt-get install lrzsz )

* 下载各种安装包,可以使用:

wget url  //【url : 安装包的远程路径,这样既可自动下载到对应的目录里面了】

------------------------------------------------------------------------------------------------

* 查看内存硬件信息:

cat /proc/meminfo

 查看cpu 硬件信息:

cat /proc/cpuinfo

* 定时任务:crontab

查看有哪些定时任务:crontab -l
编辑定时任务:crontab -e
删除定时任务:crontab -r(或者 -ri ,i 表示删除的时候提醒,是否删除)

* 磁盘空间占用查看命令:

  df 查看全部磁盘空间占用情况(或者 df -h ,加上 -h 表示人性化方式展示,即单位根据情况变化 k 或者 m 或者 g)

 某个文件目录下的空间占用情况:

  du 查看该目录下的所有空间,前提得先 cd 到这个目录下,也可以直接 du /home/xxx  这样直接指定目录(同理,可以加上 -h ,人性化展示  du -h)

  du -s 只展示最大的一个目录

  du -sh 人性化展最大的目录占用的空间

  df -h  查看所有磁盘下的内容容量和各自占用情况

  du -sh /xxx  查看具体某个文件或文件夹大小占用情况

* 域名解析:nslookup(把域名解析成 ip ,也可以反向解析,把 ip 解析出来是什么域名,但这个不是所有 ip 都支持)

nslookup www.baidu.com

结果为: 

Server: 192.168.17.2  //哪里发起的解析
Address: 192.168.17.2#53

Non-authoritative answer:  //解析后的结果
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 110.242.68.4
Name: www.a.shifen.com
Address: 110.242.68.3

* 用户的添加:

需要有管理员权限才可以:
useradd -m mongo //创建在家目录下的一个新用户
passwd mongo ,然后连续输入两次密码,给该用户设置密码,不进行这一步操作,不需要密码即可登录
userdel mongo ,删除该用户

查看当前是哪个用户:

whoami

查看所有登录的用户:

who

查看每个用户的id :

id -u mongo

* 用户之间的切换:

su 用户名,
切换到管理员,才可以用 sudo -i
sudo 是临时获取管理员权限的意思

比如:

mongo$: useradd -m mongo2 //会报没有权限
如果: mongo$: sudo useradd
-m mongo2 //就可以正常创建。

并不是所有用户都可以用 sudo 来临时获取管理员权限,只有在 sudo 组里面的才可以。

* 用户的锁定和解锁

usermod -L 用户名
usermod -U 用户名

这种情况,只有在普通 a用户和普通b用户之间才能体会到锁定和解锁,root 用户下,依然可以登录。

比如:锁定a用户后,b用户无法登录a用户,解锁后就可以

特殊情况:如果a用户锁定了,然后 root 用户修改了a用户的密码,此时 b用户用新密码,则可以登录,修改了密码会自动解锁

创建的用户,账号放在:/etc/passwd 里面

      密码放在:/etc/shadow 里面

* 用户组的新建和删除:

新建:

groupadd 组名
groupadd -g 1003 组名 //-g 用户自己指定组 id,不写默认给一个

可以在 /etc/group 目录下查看到新建的组

删除:

groupdel 组名

查看用户位于哪个组:

groups  //查看当前用户位于哪些组,一个用户可以位于多个组
groups 用户名  //指定查看用户位于哪个组

【创建用户的同时,会默认创建一个和用户名同名的组!所有用户都会放在组里面!】

* 将用户添加到组里面:

gpasswd -a 用户名 组名

 将用户从该组删除:

gpasswd -d 用户名 组名

 改变有效群主:【理解:一个用户可以有多个群主,位于第一个的是有效群主,使用 groups 查看排序】

newgrp 组名

 * 在一台 linux 里面链接连一台 linux ,在 linuxA 里面 ifconfig 查看 ip ,然后在 linuxB 里面 ,使用:

ssh linuxA用户名@ip,再输入 yes,输入密码,即可远程连接

比如:ssh mongo@192.168.8.139

* shell 脚本查询某一个进程 pid :

ps aux | grep 服务名  | grep -v "grep" | awk '{print $2}' 

① ps aux  列出所有进程

② | grep 服务名  筛选出指定服务名称的进程

③ | grep -v "grep"  去掉 grep 本身的结果(每次查询,本身服务会带有一个 grep 进程,要过滤掉)

④ | awk '{print $2}'  获取列表的第二列,即 pid。

* 查看服务器信息

lscpu  //查看服务器核心数量
ps aux --sort=%cpu  //查看所有进程(ps aux --sort=-%cpu 倒叙展示)
cat /etc/redhat-release  //查看当前服务器的版本
cat /proc/cpuinfo  //查看服务器基本参数信息
free -h   //查看运行内存
top   //查看任务管理,所有线程动态展示【再按t:查看cpu使用率;按m查看内存使用率】
date  //查看服务器当前时间

* centos ens33没有ip的解决方法(没有ip会导致无法ping通别的服务)最简单的方式,直接输入以下命令,即可 ping 通

dhclient ens33

=============

posted @ 2019-11-01 19:26  雪化山河  阅读(253)  评论(0)    收藏  举报