linux常用命令

0.获取shell脚本执行时间差

 time1=$[$(date +%s%N)/1000000]
 time2=$[$(date +%s%N)/1000000]
 echo "时间差:"$((time2-$time1))

1.window1占用查询端口的pid查询
C:\Users\helloworld>netstat -ano|findstr “9989”
window1关闭对应pid
C:\Users\helloworld>taskkill -F -PID 6832
成功: 已终止 PID 为 6832 的进程。
2.刷新windows DNS 解析缓存
ipconfig /flushdns
3.windows查看域名映射ip
nslookup yun.fangte.com
4.windows ping端口
telnet 10.98.98.103 443
5.linux ping端口
wget 10.1.3.6:3306

0.本地linux服务器
bigDataServer
root/cipher
111111
切换linux桌面/命令行 CTrl + alt + f2 / CTrl + alt + f1
ctrl + alt 显示鼠标光标
ctrl + G进入linux界面里

1.查找目录:find /(查找范围) -name ‘查找关键字’ -type d
查找文件:find /(查找范围) -name 查找关键字 -print
查找大文件 du -sh * | grep G

2.linux压缩和解压缩命令
tar zxvf test.tar.gz -C test
-C 选项的作用是:指定需要解压到的目录

tar
解包:tar zxvf filename.tar
打包:tar czvf filename.tar dirname
gz命令
解压1:gunzip filename.gz
解压2:gzip -d filename.gz

.tar.gz 使用tar命令进行解压
	tar -zxvf java.tar.gz
	解压到指定的文件夹
	tar -zxvf java.tar.gz  -C /usr/java
gz文件的解压 gzip 命令
	gzip -b java.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

3.jps查看进程

4.创建多级目录或文件夹
mkdir -p aaa/bbb/ccc

  1. chown -R rich:rich /home/wwwroot/*
    chmod -R 7777 /home/wwwroot/*

6.查找程序进程服务路径 /proc/进程ID

7.重启网络
/etc/init.d/network restart

8.查看硬盘使用
df -hT

9.查看连接数、等待数
netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}’

10.清理linux服务器缓存
echo 1 > /proc/sys/vm/drop_caches 可以暂时清空cache和buffer

echo 0 是不释放缓存
echo 1 是释放页缓存
ehco 2 是释放dentries和inodes缓存
echo 3 是释放 1 和 2 中说道的的所有缓存

11.passwd 更改用户 root 的密码 。
passwd huazi 更改用户 huazi 的密码 。

12.查看文本有多少条数据 cat xx.log | wc -l

13.取文本前多少行数据 head -7500 train.txt > train_7500.txt
取文本最后多少行数据 tail -7500 train.txt > train_7500.txt

14.root给linux新用户赋予查看权限
新增用户
adduser testuser
给用户设置密码
passws testuser
给用户设置用户组
usermod -g root manager
设置用户读取权限
chmod 755 /root/logs

15.httpd给文件夹赋权限
chcon -R -t httpd_sys_content_t /var/www/html/qq55

16.scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music

17.Linux下vim显示行数
第一种是,手动显示:在vim命令行模式下输入 :set nu
取消显示:在vim命令行模式下输入 :set nonu
第二种是,永久自动显示:我们修改一个配置文件。
我们输入命令:vim ~/.vimrc
打开后是一个空文件,我们添加 set nu,保存退出

18.centos7安装netstat组件
yum install net-tools

19.修改文件配置
sed -i “s/server_host=localhost/server_host=mcserver/” /opt/cm-5.16.2/etc/cloudera-scm-agent/config.ini

20.挂载目录
mount -B /var/www /home/vsftpd/ftptest/www
mount -B /root/logs/authority /var/www/html/logs/authority/before
mount -B /root/api_app/authority/src/main/resources/logs /var/www/html/logs/authority/now
mount -B /root/logs/travel /var/www/html/logs/travel/before
mount -B /root/api_app/travel/src/main/resources/logs /var/www/html/logs/travel/now
mount -B /root/logs/ticket /var/www/html/logs/ticket/before
mount -B /root/api_app/ticket/src/main/resources/logs /var/www/html/logs/ticket/now
mount -B /root/logs/shop /var/www/html/logs/shop/before
mount -B /root/api_app/shop/src/main/resources/logs /var/www/html/logs/shop/now

umount /home/vsftpd/ftptest/www

umount /var/www/html/logs/platbefore

21.关机命令
shutdown:关机指令

init 0:立刻关机

shutdown -h now:立马关机

reboot:重启

init 6:立刻重启

shutdown -h +10(或10):十分钟后关机

shutdown -h 20:02:系统将在20:02关机

shutdown -r now:系统立马重启

shutdown -r +10:系统将在10分钟后重启

22.查看防火墙状态

firewall-cmd --state
1
停止firewall

systemctl stop firewalld.service
1
禁止firewall开机启动

systemctl disable firewalld.service

23.查看端口是否已启用 netstat -ntpl | grep 8080
查看进程是否存在 ps -ef | grep 9527
查看进程pid所在目录 ll /proc/9527

24.linux CPU及其核数、线程数、和占用的进程

lscpu

physical id:每颗CPU的id,计算系统中有几个CPU。
cpu cores:当前的CPU有几个核心。
processor:每个CPU线程的id,计算系统中总计有几个CPU线程。

# 总核心数 = 物理CPU个数  X  每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数  X  每颗物理CPU的核数  X  超线程数

# 查看CPU逻辑id
grep 'physical id' /proc/cpuinfo | sort -u

# 查询物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的核数(即个数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

# 查看总线程数量
grep 'processor' /proc/cpuinfo | sort -u | wc -l

# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# cpu详细信息
cat /proc/cpuinfo

# intel官方查看CPU列表信息
https://ark.intel.com/content/www/us/en/ark.html#@Processors   
   
# CPU占用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k3|head -10 

# 内存消耗最多的前10个进程 
ps auxw|head -1;ps auxw|sort -rn -k4|head -10 

# 虚拟内存使用最多的前10个进程 
ps auxw|head -1;ps auxw|sort -rn -k5|head -10

	USER      //用户名
	%CPU      //进程占用的CPU百分比
	%MEM      //占用内存的百分比
	VSZ       //该进程使用的虚拟內存量(KB)
	RSS       //该进程占用的固定內存量(KB)resident set size
	STAT      //进程的状态
	START     //该进程被触发启动时间
	TIME      //该进程实际使用CPU运行的时间

	ps auxw
	u:以用户为主的格式来显示程序状况
	x:显示所有程序,不以终端机来区分 
	w:采用宽阔的格式来显示程序状况
	ps auxw|head -1 输出表头
	
	sort -rn -k5 
	-n是按照数字大小排序
	-r是以相反顺序
	-k是指定需要排序的栏位

tty (Teletype terminal )与进程关联的终端
	串行端口终端(/dev/ttySn)
	伪终端(/dev/pty/) 
	控制终端(/dev/tty) 
	控制台终端(/dev/ttyn,   /dev/console) 
	虚拟终端(/dev/pts/n) 

stat取值含义
	D      //无法中断的休眠状态(通常 IO 的进程);
	R      //正在运行可中在队列中可过行的;
	S      //处于休眠状态;
	T      //停止或被追踪;
	W      //进入内存交换 (从内核2.6开始无效);
	X      //死掉的进程 (基本很少见);
	Z      //僵尸进程;
	<      //优先级高的进程
	N      //优先级较低的进程
	L      //有些页被锁进内存;
	s      //进程的领导者(在它之下有子进程);
	l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
	+      //位于后台的进程组;

https://www.cnblogs.com/dadonggg/p/8778318.html
99.如何尽量处理TIMEWAIT过多?

编辑内核文件/etc/sysctl.conf,加入以下内容:

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 修改系默认的 TIMEOUT 时间
然后执行 /sbin/sysctl -p 让参数生效.

/etc/sysctl.conf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。
简单来说,就是打开系统的TIMEWAIT重用和快速回收。

如果以上配置调优后性能还不理想,可继续修改一下配置:

复制代码
vi /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000
#表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
复制代码

修改完毕后,执行生效
sysctl -p /etc/sysctl.conf
sysctl -w net.ipv4.route.flush=1

一. Linux下安装java的jdk和配置环境变量
每次感觉配这个超级简单 但是每次都要查下 记一下好了

Linux下安装jdk,步骤如下

1:下载jdk包:本章使用的为后缀为tar.gz的文件(不需要安装),如jdk-8u111-linux-x64.tar.gz

下载RPM包: wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm

2: 把jdk文件保存至Linux下目录:通过控制台,使用mkdir命令生成user/java目录,并把文件放入其下

3:解压tar.gz文件:通过控制台,进入user/java下,执行 tar zxvf jdk-8u111-linux-x64.tar.gz,将其进行解压

4:配置环境变量:打开控制台,运行 sudo vi /etc/profile,在最后插入要配置的内容 ,按Esc键 ,输入( :wq 保存并退出)

JAVA_HOME=/home/gcs/user/java/jdk1.8.0_111
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

5:运行 source /etc/profile,使配置环境生效

6:运行 java -version 看是否生效。若出现jdk版本号,则安装并配置环境变量成功

如果是RPM安装包执行如下安装代码:

rpm -i jdk-8u151-linux-x64.rpm

二. Linux下关于wget安装mysql的过程
https://www.cnblogs.com/opsprobe/p/9126864.html
Ubuntu18.04下安装MySQL
提示:以下操作均在root权限下进行。

Ubuntu重启mysql
sudo /etc/init.d/mysql start
sudo service mysql start

查看有没有安装MySQL:

dpkg -l | grep mysql

安装MySQL:

apt install mysql-server

安装完成之后可以使用如下命令来检查是否安装成功:

netstat -tap | grep mysql

通过上述命令检查之后,如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。

登录mysql数据库可以通过如下命令:

mysql -u root -p

-u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是mysql数据库是没有密码的,Enter password:处直接回车,就能够进入mysql数据库。

然后通过 show databases; 就可以查看当前的所有数据库。

接下来,为了确保数据库的安全性和正常运转,对数据库进行初始化操作。这个初始化操作涉及下面5个步骤。

(1)安装验证密码插件。

(2)设置root管理员在数据库中的专有密码。

(3)随后删除匿名账户,并使用root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。

(4)删除默认的测试数据库,取消测试数据库的一系列访问权限。

(5)刷新授权列表,让初始化的设定立即生效。

对于上述数据库初始化的操作步骤,在下面的输出信息旁边我做了简单注释。

root@ubuntu-virtual-machine:~# mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin? # 要安装验证密码插件吗?

Press y|Y for Yes, any other key for No: N # 这里我选择N
Please set the password for root here.

New password: # 输入要为root管理员设置的数据库密码

Re-enter new password: # 再次输入密码

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # 删除匿名账户
Success.

Normally, root should only be allowed to connect from
‘localhost’. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N # 禁止root管理员从远程登录,这里我没有禁止

… skipping.
By default, MySQL comes with a database named ‘test’ that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y # 删除test数据库并取消对它的访问权限

  • Dropping test database…
    Success.

  • Removing privileges on test database…
    Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y # 刷新授权表,让初始化后的设定立即生效
Success.

All done!

检查mysql服务状态:

systemctl status mysql

显示如下结果说明mysql服务运行是正常的:

再次用mysql -u root -p命令,Enter password:处输入刚设置的密码,回车,就能够进入mysql数据库。

使用 use mysql; 命令打开mysql命名的数据库,显示当前数据库的表:show tables; 查询user表里的数据:select * from user;(user表里是mysql数据库的所有账户信息)

现在配置mysql允许远程访问,首先编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉bind-address = 127.0.0.1

保存退出,然后进入mysql数据库,执行授权命令:

mysql -u root -p

mysql> grant all on . to root@’%’ identified by ‘你的密码’ with grant option;

mysql> flush privileges; # 刷新权限

mysql> exit

然后执行exit命令退出mysql服务,再执行如下命令重启mysql:

systemctl restart mysql

现在Windows下可以使用Navicat图形化工具远程连接Ubuntu下的MySQL数据库,输入刚授权远程权限的密码。

这里顺便再分享下:Navicat for MySQL 10.1.7安装包

链接:https://pan.baidu.com/s/1CyDXr79v7Ufc60fv_XQ_gA ,提取码:ohf8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值