LINUX常用命令
ls命令
1 | ls -l # 目录详细结构 |
mkdir命令
1 | mkdir folder1 # 创建folder1目录 |
rm命令
1 | [root@VM_0_11_redhat lc]# rm -rf /var/log/httpd/access # 删除access目录以及access下的子目录 |
复制dir1下的所有文件包含隐藏文件复制到dir2中
dir2不存在:
1 | [root@VM_0_11_redhat lc]# cp -r dir1 dir2 |
dir2不存在
1 | [root@VM_0_11_redhat lc]# cp -r dir1/. dir2 |
cp命令
1 | [root@VM_0_11_redhat lc]# cp file1 file2 # 复制file1文件到file2 |
mv命令
1 | [root@VM_0_11_redhat lc]# mv file1.txt file2.txt # 重命名 |
tar 解压
解压到当前目录
1 | [root@VM_0_11_redhat lc]# tar -xvf apache-tomcat-7.0.57.tar.gz |
解压到/home/mysql文件夹下
1 | [root@VM_0_11_redhat lc]# tar -zxf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz -C /home/mysql |
vi命令
1 | vi file1.txt # 查看file1.txt文件第一页(command mode),trl + f进行翻页 |
cat命令
1 | cat file1.txt # 查看file1.txt所有信息 |
tail命令
1 | tailf catalina.out | grep 'countTime' # 只实时显示含有'countTime'所在行的信息 |
find命令
1 | find folder1 -type f -name "*.txt" # 查询当前目录下的folder1文件夹中匹配'*.txt'的文件或文件夹 |
echo命令
1 | echo "hello world" > file.txt # 当前目录下创建file.txt文件并添加数据 |
查看服务器外网ip
1 | curl http://members.3322.org/dyndns/getip |
查看服务器网络地址
1 | [root@iZbp199af3f3y8j7fr8kolZ ~]# ifconfig |
其中eth0为内网,eth1为外网
更改文件或文件夹权限
改变一个文件的权限: chmod mode file|dir
改变所有子目录的权限: chmod mode dir -R
mode = 777 or 752 and so on.
mode的三个数字,分别表示 owner,group,others所具有的权限。
1 = x 执行 2 = w 写 4 = r 读,比如owner具有所有权限,1+2+4=7,
又比如 group 具有 读 和 执行 权限 1+4 = 5
查看端口使用情况
查看正在使用的端口号
1 | netstat -anp |
查看端口号对应的服务名称
1 | lsof -i:"50358" |
根据pid查看进程信息所在目录
1 | lsof -p "24619" |
根据PID进程号关闭服务
1 | kill -9 "1338" |
根据服务名称查看是否启用
1 | ps -aux | grep "memcache" |
查询端口号对应的pID或pid对应的端口号
1 | [root@localhost ssp-service-1.0.3-SNAPSHOT]# netstat -lntp |
通过Pid或服务名称查询属于哪个服务
1 | [root@localhost ssp-service-1.0.3-SNAPSHOT]# ps -aux | grep 19663 |
./和sh执行脚本的区别
./需要执行权限
sh不需要,sh是个软链接,它可能是一个任意的shell,通常默认是bash shell
用type命令可以查看
./执行调用的是你开头一行定义的shell,不指定系统会调用默认shell程序
查看linux版本信息
1 | [root@VM_0_11_redhat /]# cat /proc/version |
查看所有linux版本信息
1 | [root@VM_0_11_redhat /]# yum install redhat-lsb -y |
查看cpu信息
1 | [root@VM_0_11_redhat ~]# cat /proc/cpuinfo |
组操作
查询所有组信息
1 | [root@VM_0_11_redhat ~]# cat /etc/group |
查询组下所有用户
mysql为组名
1 | [root@VM_0_11_redhat ~]# grep 'mysql' /etc/group |
创建组和删除组
创建组
1 | [root@VM_0_11_redhat ~]# groupadd mysql |
在mysql组创建用户lcmysql
1 | [root@VM_0_11_redhat mysql-8.0]# useradd -g mysql -d /home/mysql/mysql-8.0 lcmysql |
useradd -g mysql -d /home/mysql/mysql-8.0 lcmysql 含义:
在mysql组中添加lcmysql用户,并指定lcmysql用户登录时的初始目录为/home/mysql/mysql-8.0
用户授权
将/home/mysql/mysql-8.0 lcmysql目录及其子目录和文件,所有者改变为lcmysql,所属组改变为mysql
1 | [root@VM_0_11_redhat mysql-8.0]# chown -R lcmysql:mysql /home/mysql/mysql-8.0 lcmysql |
修改目录权限
设置/home/mysql/mysql-8.0目录的权限
1 | [root@VM_0_11_redhat mysql-8.0]# chmod 755 /home/mysql/mysql-8.0 |
问题
为mysql组中添加lcmysql用户时出现问题
原因:
系统添加用户的标准步骤
1.编辑/etc/passwd与/etc/group
2.创建用户主目录
3.从/etc/skel拷贝文件与目录
4.让新用户获得其主目录与文件的拥有权限
5.给新用户一个密码
解决办法:
依旧使用上面的脚本建用户,然后手动拷贝配置文件到/u01/oracle下。
cp /etc/skel/.bash_profile /home/mysql/mysql-8.0
cp /etc/skel/.bashrc /home/mysql/mysql-8.0
cp /etc/skel/.bash_logout /home/mysql/mysql-8.0
这样既可。
1 | [root@VM_0_11_redhat mysql-8.0]# cp /etc/skel/.bash_profile /home/mysql/mysql-8.0 |
删除组
删除组之前需要里面的用户
groupdel 组名称
1 | [root@VM_0_11_redhat mysql-8.0]# groupdel mysql |
用户操作
查询所有用户的根目录信息
1 | [root@VM_0_11_redhat etc]# cat /etc/passwd |
创建用户
创建用户
使用root(超级管理员)创建lc(普通用户)
1 | [root@VM_0_11_redhat ~]# useradd lc |
设置密码
root用户登录,设置lc用户的密码
1 | [root@VM_0_11_redhat ~]# passwd lc |
切换用户时出现问题
1 | [lc@VM_0_11_redhat ~]$ su - lcmysql |
退出状态码
exit nnn
1 | -bash-4.2$ exit |
出现-bash-4.2$状态原因:
在linux下通过useradd方式创建新用户时,都会将所有的配置文件从/etc/skel复制到/home目录的新用户录下。但现在这个mysql目录是新建立的,空的,那么就复制/etc/skel这个目录的文件到/home/mysql中:
执行命令:
1 | [root@VM_0_11_redhat ~]# cp -r /etc/skel/. /home/mysql |
删除用户
删除ftplc用户同时删除用户的家目录和邮件通知目录
1 | [root@VM_0_11_redhat ftp]# userdel -r ftplc |
杀掉进程号再删除
杀掉进程
kill -9 进程号
1 | [root@VM_0_11_redhat mysql-8.0]# kill -9 5910 |
查找目录
1 | # 查找tomcat目录 |
查看linux是否安装tomcat
1 | [root@VM_0_11_redhat bin]# rpm -qa|grep tomcat |
查找软件是否启动
1 | [root@VM_0_11_redhat /]# ps -ef | grep redis |
ps -ef | grep 程序名称
vim命令
1 | [root@VM_0_11_redhat logs]# vim 123.txt |
按 i 进行编辑操作
按 esc 退出编辑,再按u或者ctrl + r 撤销编辑
查看jdk安装路径
1 | [root@VM_0_11_redhat /]# which java |
which java : 是定位不到安装路径的。which java定位到的是java程序的执行路径(定位到java程序的执行路径是/usr/bin/java)
ls -lrt /usr/bin/java : 再次查找/usr/bin/java的执行路径是/etc/alternatives/java,以此类推查找到jdk的安装路径
ps -aux | grep xxx命令讲解
该命令可查看是否安装了xxx程序,并查看程序状态
1 | [root@VM_0_11_redhat home]# ps -aux | grep mysql |
ps aux输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
说明:
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态,linux的进程有5种状态:
1 | D 不可中断 uninterruptible sleep (usually IO) |
注: 状态W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
chown命令
格式 : chown[选项]…[所有者][:[组]]文件…
命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
命令参数:
必要参数:
-c显示更改的部分的信息
-f忽略错误信息
-h修复符号链接
-R处理指定目录以及其子目录下的所有文件
-v显示详细的处理信息
-deference作用于符号链接的指向,而不是链接文件本身
选择参数:
–reference=<目录或文件>把指定的目录/文件作为参考,把操作的文件/目录设置成参考文件/目录相同拥有者和群组
–from=<当前用户:当前群组>只有当前用户和群组跟指定的用户和群组相同时才进行改变
–help显示帮助信息
–version显示版本信息
例如:
chown -R root:mysql /var/data
将/var/data目录以及子目录的所有者变为root用户,所属组变为mysql
chmod命令
755 rwxr-xr-x
7:rwx (4+2+1 | 读取+写入+执行) User
5:r-x (4+1 | 读取+执行) Group
5:r-x (4+1 | 读取+执行) Other
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
查看linux服务器内存使用情况命令
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
1 | [root@VM_0_11_redhat home]# top |
1 | [root@VM_0_11_redhat ~]# free |
查看RAM使用情况最简单的方法是通过/proc/meminfo
1 | [root@VM_0_11_redhat ~]# cat /proc/meminfo |
查看linux服务器相关命令
型号
1 | [root@ip-172-31-40-223 ~]# dmidecode|grep "System Information" -A9|egrep "Manufacturer|Product" |
查看linux系统信息命令
1 | # uname -a # 查看内核/操作系统/CPU信息 |
资源
1 | # free -m # 查看内存使用量和交换区使用量 |
磁盘和分区
1 | # mount | column -t # 查看挂接的分区状态 |
网络
1 | # ifconfig # 查看所有网络接口的属性 |
进程
1 | # ps -ef # 查看所有进程 |
用户
1 | # w # 查看活动用户 |
服务
1 | # chkconfig --list # 列出所有系统服务 |
程序
1 | # rpm -qa # 查看所有安装的软件包 |
查看linux磁盘内存,以M为单位
1 | [root@izbp1d9e2n6iw6mvtx07jmz imp-server]# df -m |
1 | PID:进程的ID |
查看RAM运行内存
1 | [root@izbp1d9e2n6iw6mvtx07jmz imp-server]# cat /proc/meminfo |
查询进程占用RAM情况
1 | [root@izbp1d9e2n6iw6mvtx07jmz imp-server]# ps aux --sort=-rss |
centos7查看防火墙状态
1 | [root@localhost volc]# systemctl status firewalld.service |
centos7开启防火墙
1 | [root@localhost ~]# systemctl start firewalld.service |
查看端口号开放情况
1 | [root@localhost ~]# firewall-cmd --list-ports |
1 | [root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent |
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
#重启firewall
firewall-cmd –reload
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
检查启动端口
1 | [root@localhost bin]# netstat -an|grep 2181 |
chkconfig
管理开机启动sh脚本配置
以zkServer.sh为例
在/etc/init.d/
目录下创建autoStarZookeeper
文件
内容如下
1 |
|
添加到chkconfig,开机自启动
1 | [root@c69-01 ~]# chkconfig --add autoStarZookeeper |
重新启动linux系统
通过查看端口号是否占用验证zookepper
开机启动配置是否生效
zookeeper服务设置的端口号是2181
1 | alhost ~]$ netstat -an|grep 2181 |
2181端口号已经被占用说明配置已经生效了
从chkconfig
管理中删除autoStarZookeeper
1 | [root@c69-01 ~]# chkconfig --del autoStarZookeeper |
查询端口号被哪个服务占用
1 | # 查询2181端口号被哪个进程占用 |
定位linux服务器问题命令
查看定位指定字符串nohup.out文件
1 | root[ffds]# grep enter 我是谁 nohup.out |
本地使用scp命令上传和下载文件
上传
1 | C:\Users\Administrator>scp F:\wk\learn\xdclass-mobile-redis\target\xdclass-mobile-redis-0.0.1-SNAPSHOT.jar root@192.168.25.11:/usr/local/src/project |
下载
1 | F:\wk>scp root@192.168.25.11:/usr/local/src/project/xdclass-mobile-redis-0.0.1-SNAPSHOT.jar F:\wk |