常用命令
查看当前目录 pwd
清屏 clear
查看文档 man 命令
结束进程 q
清屏 clear
mut(挂载) mut[设备名称][挂载点]
查询用户 cat /etc/passwd
查询组 cat /etc/group
筛选
grep mysql
cat /etc/group | grep mysql
cd
打开指定目录: cd[目录名称]
打开当前用户的主目录: cd ~
返回上级目录: cd..
返回进入目录: cd -
打开根目录: cd /
ls
以列的方式查看当前目录下的文件列表: ls -l,ll,ls -ll
查看当前目录下所有的文件(包括隐藏文件): ls -a (隐藏文件前面带点)
以列表的方式查看当前目录下的所有文件: ls -la
mkdir
新建文件目录: mkdir文件夹名称
递归新建多级目录: mkdir -p文件夹名称
rmkdir(删除文件目录命令):rmkdir[选项]目录名称
删除指定目录: rmkdir 目录名称
rm(删除文件或目录) rm[选项]档案或目录
强制删除文件或目录:rm -rf 目录或文件
在删除前询问是否确认删除:rm -ri 目录或者文件
cp(复制文件或目录命令) cp[选项][目录][名称][目录2名称]
复制目录1的所有的文件和文件夹到目录2: cp -r[目录1][目录2]
执行复制操作是覆盖原有目录前询问用户:cp -ri[目录1][目录2]
mv(移动文件、修改文件名命令) mv[选项][源文件或目录][目标文件或目录]
将文件夹1名称更改为文件2: mv 文件1 文件2
将目录1的文件移动到目录2: mv 目录1 目录2
1.touch(创建文件命令) touch 文件名称
2.vi/vim(查看、编辑文件) vi 文件名
1)命令模式
L: 光标以至屏幕最后一行
space: 光标右移一个字符
backspace:光标左移一个字符
N+:光标向上移动N行
n+:光标向下移动n行
2)输入模式 Esc
a,i,r,o,A,I,R,O:编辑模式
dd:删除光标当前行
ndd:删除n行
3)末行模式 :
:wq! 保存并退出
:q! 强制退出
:s/字符串1/字符串2 将文件中出现的字符串1替换成字符串2
:set nu 显示所有的行号
3.cat(查看、编辑文件命令) cat[-参数选项]文件名称
显示一个小的文件的内容: cat 文件名称
创建并打开一个新的文件: cat >文件名称
4.head(查看文件开头内容,默认10行) head[参数][文件]
head -n文件名称
5.tail(查看文件结尾内容命令) tail[-参数选项]文件名称
动态加载某个文件的内容(常用于查看日志文件): tail -f文件名称
展示文件最后几行的数据: tail -n 行数文件名称
查询主机信息
uname -a
cat /proc/version
exit 退出
pwd 查看当前目录
cd 打开目录
cd .. 返回上一级
cd / 返回根目录
ls 查看当前目录下文件不含隐藏文件
ls -a: 查看当前目录下文件 含 文件
ll 列表的方式显示文件 详细信息
rm -rf 删除文件 直接删除 不建议使用
rm -ri t.java 删除文件 询问用户 y确定 n不删除
touch Test.java 创建文件
mkdir 创建文件夹
cp t.java ../ 复制
gedit 文件名 查看编辑文件
vi t.java 编辑文本 按 i,a 进入编辑状态 Esc 退出编辑
:进入命令模式 wq或x 保存并退出 q! 退出不保存 w保存
head t.java 从头显示文本 默认10 行
head -n 置顶文件开始的几行
tail :从文件末尾显示文本
tail -f 多态加载某个文件的内容
tail -n 文件结尾N行内容
cat 看全文
man touch 文档 q退出
su - root 当前用户退出 root 进入 需要密码 低-->高
su - lz 高到底 不需要密码
whoami 当前用户
groups 用户属于的 用户组
id: 查看当前用户UID和GID
useradd 用户名 添加用户
useradd –u tom 600 添加用户并指定UID 500以上
passwd 1z 123 修改用户密码
usermod –l [新用户名][ 旧用户名]:修改用户登录名
usermod –g [新组名称][用户名]:修改用户所属分组
groupadd [组名]:添加分组
groupadd –g [组GID][ 组名]:添加分组并指定GID
make distclean 清空上次安装
ps -ef|grep redis(服务名) 查看进程
rpm -qa|grep iptables(软件名) 查看防火墙是否安装
rpm -qal|grep iptables(软件名) 查看防火墙(软件)的安装位置
whereis ruby(软件名) 查看软件的安装目录,必须以yum方式安装的
chkconfig 设置开机自启
du -h --max-depth=1,这个命令用于查看当前目录,哪个文件占用最大
du -h --max-depth=1 /home/* 列出home下面所有一级目录的一级目录文件大小
du -sh * 这个命令也用于查看当前目录下各文件及文件夹占用大小
du -sh / 查询/目录多大
du -sh /* 查询/下所有目录多大
查看分区的文件系统
df -T
df -h
ss -ntlp | grep nginx
#确认一下 80/tcp 跟 443/tcp 是否被nginx所使用
./bin/startup.sh ;tail -f logs/catalina.out 启动tomcat
reboot 重启系统
查看selinux状态: getenforce
Enforcing: 表示开启
Permissive:表示关闭
临时关闭selinux:setenforce 0
永久关闭selinux(设置完成需要重启):
vim /etc/selinux/config
修改为:SELINUX=disabled
用户操作命令
查看当前用户密码
vim /etc/passwd
vim /etc/shadow
1.su(切换用户命令) su[用户名]或su -[用户名] sudo(以root权限运行)
2.whoami(查看当前登录用户命令) whoami
3.groups(查看当前用户所分属分组命令groups) groups
创建组 groupadd
4.id(查看当前用户UID和GID) id
5.useradd(添加新用户命令) useradd[选项][用户名]
-c 代表comment指定一段注释性描述
-d 指定用户主目录
-g 指定用户所属的用户组
-G 指定用户所属的附加组
-u 指定用户的用户名
-r 创建系统账户
添加用户: useradd 用户名
添加用户并指定UID: useradd -u 指定的UID用户名(最好>500)
6.passwd(修改用户密码命令) passwd[选项][参数]
修改密码: passwd 用户名 密码
-d 删除密码,仅有系统管理员才能使用
-f 强制执行
-k 设置只有密码过期后才能更新
-l 锁住密码
-s 列出密码的相关信息,仅有系统管理员才能使用
-u 解开已上锁的帐号
7.userdel(删除用户) userdel[选项][用户名]
删除用户: userdel 用户名
-r 删除用户以及其登录日志等信息
-f 强制删除用户,即使用户已登录
8.usermod(修改用户信息)
修改用户登录名: usermod -l 新用户名 旧用户名
修改用户所属分组: usermod -g 新组名称 用户名
-c 修改用户帐号的备注文字
-d 修改用户登录时的目录
-e 修改帐号的有效期
-f 修改密码过期后多少天关闭帐号
-g 修改用户所属的群组
-G 修改用户所属附属组
-l 修改用户帐号名称
-L 锁定用户密码,使用密码无效
-u 修改用户id
-U 解除密码锁定
9.groupadd(添加用户组) groupadd[选项][组名称]
修改用户登录名: groupadd 组名
修改用户所属分组: groupadd -g组 GID 组名
-g 指定工作组的id
-r 创建系统工作组
-o 允许添加组ID不唯一的工作组
权限操作
权限介绍
drwxrwxr-x. 3 spz spz 21 8月 9 22:16 Learning
-rwxrw-rw-. 1 spz spz 3399 8月 25 12:05 Liunx命令.txt
d:代表是目录
-:代表文件
rwx:r(读),w(写),x(执行)
r -x:代表同组用户具有读、执行的权限,但是没有写的权限
更变权限 chmod[选项][参数]
-c 显示指令执行过程,但只返回更改的部分
-f 不显示错误信息
-r 递归授权
-v 显示指令执行过程
赋予权限
chmod ===》修改文件权限
文件格式有两种格式:数字法、字母法
数字法:
r ===》读取权限,数字代号为 "4"
w ===》写入权限,数字代号为 "2"
x ===》执行权限,数字代号为 "1"
- ===》不具任何权限,数字代号为 "0"
字母法:
u ===》 user 表示该文件的所有者
g ===》 group 表示与该文件的所有者属于同一组( group )者,即用户组
o ===》other 表示其他以外的人
a ===》all 表示这三者皆是
chmod 777 test.sh 赋予文件可执行权限
755 全部权限
chown -R mysql:mysql /usr/local/mysql
chown -R mysql mysql/
chgrp -R mysql mysql/
赋予 root 权限
方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。
方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。
方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy:x:500:500:tommy:/home/tommy:/bin/bash
修改后如下 tommy:x:0:500:tommy:/home/tommy:/bin/bash
保存,用tommy账户登录后,直接获取的就是root帐号的权限。
友情提醒:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。
进程操作
1.ps(查看进程命令) ps -ef|grep[进程关键词]
2.kill(杀掉进程) kill -9[PID]
服务操作
开启服务
service 服务名 start
启动SSH服务 service sshd start
重启服务
service 服务名 restart
启动SSH服务 service sshd restart
关闭服务
service 服务名 stop
关闭SSH服务 service sshd stop
常用的软件安装方式
1.源码安装
(1)tar(解压)安装 tar[选项][压缩包]
-c 指定特定目录压缩
-x 从备份文件中还原文件
-t 列出备份文件内容
-r 添加文件到已经压缩的文件
-z 有gzip属性的(后缀是gz的)
-j 有bz2属性的(后缀是bz的)
-Z 有cpmpress属性的
-v 显示所有过程
-O 将文件解压到标准输出
-f 使用文档名称
解压gzip包: tar -zxvf [包名]
解压bz包: tar -jxvf [包名]
解压普通包: tar -xvf [包名]
(2)进入源码目录
./configure --prefix=安装位置 --with 安装参数 --sysconfdir=配置文件目录
make
make install
2.rpm(软件包)安装 rpm[选项][软件包]
-ivh 安装显示安装进度
-Uvh 升级软件包
-qpl 列出rpm软件包内的文件信息
-qpi 列出rpm软件包的描述信息
-qf 查找指定文件属于那个rpm软件包
-Va 校验所有的rpm软件包,查找丢失的文件
-e 删除包
-qa 查找已经安装的rpm包
查询是否已经安装了某软件包:rpm -qa|grep [软件包关键字]
查询软件安装位置: rpm -ql 软件关键字
卸载已经安装的软件包: rpm -e 软件包全名
安装软件包并查看进度: rpm -ivh 软件包路径
批量卸载: rpm -qa | grep 服务名 | xargs rpm -evh --nodeps
3.yum(在线)安装
yum list //列出所指定的软件包,后可以加上你想查找的软件包的名字
yum list installed //列出所有已安装的软件包
yum list installed | grep 软件包名
yum info installed //列出所有已安裝的软件包信息
yum install 软件包名 安装
yum remove 软件包名 卸载
修改 yum 的下载源
1. 备份本地yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
2.获取阿里yum源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.服务器的包信息下载到本地电脑缓存
yum makecache
4.更新cache
yum -y update
下载文件
curl -L https://portainer.io/download/portainer-agent-stack.yml -o /usr/local/docker/portainer/portainer-agent-stack.yml
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
各种包操作命令
tar 命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
gz 命令
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...
bz2 命令
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
bz 命令
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知.tar.bz
解压:tar jxvf FileName.tar.bz
Z 命令
解压:uncompress FileName.Z
压缩:compress FileName.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
zip 命令
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
搜索命令
find
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
示例 find / -name '文件名'
centos6
关闭防火墙
service iptables stop
永久关闭防火墙
chkconfig iptables off
检测防火墙状态
service iptables status
开放端口的方法:
方法一:命令行方式
1.开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
c.d/init.d/iptables save
2.重启服务:/etc/init.d/iptables restart
3.查看端口是否开放:/sbin/iptables -L -n
方法二:直接编辑/etc/sysconfig/iptables 文件
1.编辑/etc/sysconfig/iptables文件:vi /etc/sysconfig/iptables
加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
2.重启服务:/etc/init.d/iptables restart
3.查看端口是否开放:/sbin/iptables -L -n
centos7
systemctl list-unit-files|grep enabled 查询所有自启软件
systemctl start firewalld.service 开启防火墙
systemctl restart firewalld.service 重启防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 禁止开机自启防火墙
systemctl enable firewalld.service 开机自启防火墙
firewall-cmd
--zone 作用域
--add-port=6379/tcp 添加端口,格式为:端口/通讯协议
--permanent 写入配置文件永久生效,没有此参数重启后失效
firewall-cmd --state 查询防火墙状态
firewall-cmd --reload 重启防火墙
限制port
firewall-cmd --list-all 查询防火墙中的所有端口所有
firewall-cmd --query-port=6379/tcp 查看端口是否开启
firewall-cmd --add-port=6379/tcp 暂时开启端口
firewall-cmd --remove-port=6379/tcp 暂时关闭端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent 永久开启端口
firewall-cmd --zone=public --add-port=6379-4000/tcp --permanent 永久开启端口
firewall-cmd --zone=public --remove-port=6379/tcp --permanent 永久关闭端口
限制IP地址访问
比如限制IP为192.168.0.200的地址禁止访问80端口即禁止访问机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
解除刚才被限制的192.168.0.200
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"
如我们需要限制10.0.0.0-10.0.0.255这一整个段的IP,禁止他们访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
解除限制
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" accept"
查看已经设置的规则
firewall-cmd --zone=public --list-rich-rules
可尝试直接编辑规则文件
vim /etc/firewalld/zones/public.xml
netstat -ntpl 查询所有正在使用端口
free -h 查看内存使用率
htop 查看cup使用率
建立软连接,变为全局
ln
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
示例 ln -s /usr/local/java/jdk1.8.0_144/bin/* /usr/local/bin/
如何查找 SHELL 的进程号并杀死
一、shell 查找进程并杀死
复制代码
#!/bin/sh
tomcat_id=`ps -ef | grep tomcat | grep -v "grep" | awk '{print $2}'`
echo $tomcat_id
for id in $tomcat_id
do
kill -9 $id
echo "killed $id"
done
复制代码
注意:tomcat表示要查找的程序进程名,如:tomcat、8081端口、redis等等
二、linux 查找进程并杀死
#####查找tomcat进程
ps -ef | grep tomcat | grep -v grep | awk '{print $2}'
#####查找tomcat进程并杀死
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9
删除
一、Linux下删除文件和文件夹常用命令如下:
删除文件: rm file www.2cto.com
删除文件夹: rm -rf dir
需要注意的是, rmdir 只能够删除 空文件夹。
二、删除指定文件(夹)之外的所有文件呢?
需要在当前文件夹中进行:
#删除keep文件之外的所有文件
rm -rf !(folder)
#删除folder1和folder2文件之外的所有文件
rm -rf !(folder1 | folder2)
当前文件夹中结合使用grep和xargs来处理文件名:
#删除keep文件之外的所有文件
ls | grep -v keep | xargs rm
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。
使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:
#删除当前test文件夹中keep文件之外的所有文件
find ./test/ | grep -v keep | xargs rm
说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。
直接使用find命令删除其他文件:
#删除keep以外的其他文件。
find ./ -name '[^k][^e][^e][^p]*' -exec rm -rf {} \;
#删除keep以外的其他文件。推荐!
find ./ -name '[^k][^e][^e][^p]*' | xargs rm -rf
说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。
systemctl
systemctl list-unit-files 查询启动项
systemctl list-unit-files | grep enabled 启用的
systemctl list-unit-files | grep disabled 紧用的
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_dav_module
常用工具
Xshell上传文件 ==> yum install lrzsz -y
端口测试
telnet 127.0.0.1 23
nmap 127.0.0.1 -p23
nc -vzw 2 127.0.0.1 23
nc -ul -p 23
nc -ul 23
nc -ul 127.0.0.1 23