Linux 常用命令

Linux 命令

用户权限

切换用户

su root

新建用户

useradd Peter
passwd Peter

新建用户不登录

useradd -s /sbin/nologin nagios

为文件加权限

chmod 775 *.sh

为用户赋权限

chown -R vision:vision /usr/local/jboss

指定目录所属用户

chown -R nagios.nagios /usr/local/nagios

某个文件 root 用户也无法修改时,先去除该文件的某个属性

[root@guaoran install]# lsattr config.cache.inc.php
----i-------- config.cache.inc.php
[root@guaoran install]# chattr config.cache.inc.php

增加用户 sudo 权限

vi /etc/sudoers

文件读写

查看文件内容

从第一个字节开始正向查看文件的内容

cat file

从最后一行开始反向查看一个文件的内容

tac file

查看一个长文件的内容

more file

类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作

less file

查看一个文件的前两行和最后两行

head -2 file1
tail -2 file1

实时查看被添加到一个文件中的内容

tail -f 

VIM

复制 、 剪切 、 粘贴 整行

yy
dd
p

到文件头、尾

gg
shift+g

显示文件行

:set number
:set nu

隐藏文件行

:set nonumber
:set nu!

定位到第 n 行

:n

向文件首翻半屏、尾翻半屏

Ctrl+u
Ctrl+d

向文件首翻一屏、尾翻一屏

Ctrl+b
Ctrl+f

将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

:nz

强制保存

:w!

统计、替换、解压缩文件、远程复制文件

统计替换

linux 统计某个关键字的出现次数

grep -o '/dataManual/dataResultAjax.do'  localhost_access_log.2018-06-04.txt|wc -l

替换某个文件下的某个字符串

sed -i 's/要替换的值/替换为谁/g' 文件名
查询某个目录下某个关键字

显示关键字所在的文件名以及所在行的内容

grep -r 'key' /目录

显示关键字所在的文件名以及行数和所在行的内容

grep -nr 'key' /目录

显示关键字所在的文件名

grep -lr 'key' /目录

模糊查询并显示文件的各个属性值

find epg_8701_20170*  -exec ls -l {} \;

根据名称从当前目录搜索

find . -type f -name SDzhizhux2.jpg
解压缩文件

压缩目录

tar czvf guaoran.tar.tgz guaoran

解压文件

tar -zxvf guaoran.tar.tgz

解压 zip 文件

unzip yasuobao.zip
远程复制

将本地文件 /guaoran/file 复制到远程ip(60) 的 /guaoran/ 目录下

scp -r /guaoran/file guaoran@192.168.20.60:/guaoran/

防火墙

查询端口是否已打开

netstat -anp | grep 端口
或
netstat -tunlp |grep 端口

查看该服务的端口

netstat -tlpn| grep httpd

根据端口查看进程id

lsof -i tcp:端口

firewall

启动、重启、查看状态、停止

systemctl start firewalld
systemctl restart firewalld
systemctl status firewalld 
systemctl stop firewalld

开机启用和禁用防火墙

systemctl enable firewalld.service
systemctl disable firewalld.service

查看防火墙服务是否开机启动

systemctl is-enabled firewalld.service

查看启动失败的服务列表

systemctl --failed

开放端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

查看所有打开的端口

firewall-cmd --zone=public --list-ports

iptables

启动、重启、查看状态和关闭服务

service iptables start
service iptables restart
service iptables status
service iptables stop

开放端口 : 修改 vim /etc/sysconfig/iptables 文件 ,增加如下一行

iptables -I INPUT -j ACCEPT -p tcp --dport 3306 -m state --state NEW

设置服务开机启动

开机启动

chkconfig httpd on

取消开机启动

chkconfig httpd off

服务器重启和关机

服务器重启

重启命令

reboot

立刻重启(root用户使用)

shutdown -r now

过10分钟自动重启(root用户使用)

shutdown -r 10

在时间为20:35时候重启(root用户使用)

shutdown -r 20:35

服务器关机

立刻关机

halt
或
poweroff

立刻关机(root用户使用)命令安全地将系统关机

shutdown -h now

10分钟后自动关机

shutdown -h 10

内存、CPU

查看文件或目录大小

du -sh cms

查看目录每个文件的大小

du -sh cms/*

查看剩余内存

free -m

IO 信息

iostat

查看磁盘空间占用情况

df -h

端口查看

查看进程的端口号

sudo netstat -unltp|grep java

根据端口查看进程id

lsof -i tcp:8998

http_load

命令格式:http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件

-parallel 简写-p :含义是并发的用户进程数。
-fetches 简写-f :含义是总计的访问次数
-rate 简写-p :含义是每秒的访问频率
-seconds简写-s :含义是总计的访问时间

执行了一个持续时间10秒的测试,并发次数为3次

http_load -parallel 3 -seconds 10 urls.txt 

执行了一个持续时间10秒的测试,每秒的频率为3次

http_load -rate 3 -seconds 10 urls.txt 

性能监控

查看CPU 个数

总核数 = 物理CPU个数 X 每颗物理CPU的核数

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

获得CPU核心数 (该命令即可全部算出多少核)

grep 'model name' /proc/cpuinfo | wc -l

查看物理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

查看内存IO

查看内存

free

查看系统负载

vmstat 1 2

查看磁盘负载

iostat -x 1 3

查看系统监信息(1/c)

top

MySQL

导出/入 MySQL 数据

mysqldump

将库导出到一个SQL文件

mysqldump db_name > /path/name.sql -uroot -p

将库导出到一个SQL文件,如果数据库太大,压缩导出

mysqldump db_name | gzip > /path/name.sql.gz -u root -p

导出多个库

mysqldump -h192.168.20.45 -uroot -p123456 --databases  db db1|gzip > /mnt/users/guaoran/dumpdata/db.sql.gz

导出所有库

mysqldump -uroot -proot --all-databases |gzip  > /guaoran/all.sql.gz

导出单个库,并生成创建库的脚本

如果加上–opt参数则生成的dump文件中稍有不同:
建表语句包含drop table if exists tableName
insert之前包含一个锁表语句lock tables tableName write,insert之后包含unlock tables
如果加上 -B 会生成创建库脚本

mysqldump -h192.168.20.45 -uroot -p123456 --opt -B  db> /mnt/users/guaoran/db.sql

导入sql.gz 文件到数据库

gunzip <db.sql.gz |mysql -uroot -proot

全局读锁定,执行了命令之后所有库所有表都被锁定只读。

一般都是用在数据库联机备份,mysql 连接中执行

FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES;

Oracle

进入SQL

sqlplus vision/vision@127.0.0.1:1521/appdb

导出表

exp vision/vision@127.0.0.1:1521/szdb_taf file=d:\daochu.dmp tables=t_cpg_program_v2

导入表

imp vision/vision@127.0.0.1:1521/appdb  file=d:\daochu.dmp fromuser=sz_visiontv TOUSER=sz_visiontv  tables=t_cpg_program_v2

JVM 调优命令

启动应用

启动 java 应用

nohup java -Dfile.encoding=utf-8 -jar cms.jar --server.port=8080  --logging.level.root=warn > cms.log 2>&1 & echo $!> cms.pid

启动 java 应用并设置 JVM 参数

nohup java -Dfile.encoding=utf-8 -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC eurekaServer.jar --server.port=10000 --logging.level.root=warn >> logs/eurekaServer.log 2>&1 & echo $!> pid

查看命令

JPS

输出主类 或者 jar 的完全路径名

sudo jps -l

输出 jvm 参数

sudo jps -v

输出 main 的参数

sudo jps -m

输出主类 或者 jar 的完全路径名并输出 main 的参数

sudo jps -lm

jstat

查看垃圾收集信息

sudo jstat -gcutil pid 1000

堆内存统计

sudo jstat -gccapacity pid

jinfo

查看虚拟机参数

jinfo -flags pid

实时参数调整

sudo jinfo -flag -PrintGC pid

jmap

打印 java 堆摘要

sudo jmap -heap pid

打印类加载器统计信息

sudo jmap -clstats pid

打印 java 对象堆的柱状图

sudo jmap -histo:live pid

打印 dump 日志信息

sudo jmap -dump:format=b,file=/mnt/users/guaoran/cms.hprof pid

jstack

查看 java 线程的调用堆栈信息

sudo jstack 12617

把线程ID转为16进制

printf "%x\n" 2866

jconsole 和jvisualVM 监控远程应用(开放端口不行,把防火墙关了)

java -Djava.rmi.server.hostname=192.168.20.60 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar xxx.jar

MongoDB

数据导出和导入

导出 demo 数据库 collection 表的数据为 json 格式

./mongoexport -d demo -c student -o /guaoran/mongodb/export/demo.json --type json

导入 json格式 数据到 demo2 数据库student 表

./mongoimport -d demo2 -c student --file /guaoran/mongodb/export/demo.json --type json

索引

创建复合索引

db.priceInfo.createIndex({"state" : 1,"provId":1,"marketName:":1},{background:true});

创建唯一索引

db.student.createIndex({name:1},{unique:true});

查看索引

db.priceInfo.getIndexes();

删除指定的索引

db.COLLECTION_NAME.dropIndex("INDEX-NAME");

删除所有索引

db.COLLECTION_NAME.dropIndexes();

查看执行计划

db.student.find({country:"商丘"}).explain("executionStats");

查询语句

查询分组格式化日期并排序

db.loadometerIncome.aggregate([
    { $match : { state : 1 } } ,
    {$group : {_id : "$time", count  : {$sum : "$netWeight"} }} ,
    {$project:
    	{time: { $dateToString: { format: "%Y-%m-%d", date: "$_id" } },count:1,_id:0}
    },
    { $sort: { time: -1 }},
    {$limit:15}
])

查询分组并分页

db.priceInfo.aggregate([ 
    {
        "$match" : { 
            "state" : 1 , 
            "marketName" : "合肥周谷堆农产品批发市场" , 
            "provName" : "安徽省" , 
            "pubDate" : { 
                "$gte" : ISODate("2016-03-04T16:00:00.000Z") , 
                "$lte" : ISODate("2016-06-24T16:00:00.000Z")
            }
        }
    } , 
    { "$group" : { "_id" : "$productName"}},{ $sort: { _id: 1 }},
    { $skip : 0 },
    { $limit : 2 }
]);

查询并指定显示字段

db.getCollection('FAO生产数据集合').find({
    item7: "油菜籽",
    item4: "亚洲",
    item3: "中国",
    item10: {
        $in: ["收获面积", "单产", "产量"]
    },
    "item13": {
        $lte: "2015",
        $gte: "1962"
    }
},
{item12: 1, item10:1,item14:1,item13:1,_id:0}
).sort({item13: 1})

查询 and or

db.getCollection('专利数据库').find(
{
    state:1,
    $or :[
        {"item10" : { 
            "$gte" : "20180912"
            }
        },
        {
        "item10" : { 
            "$gte" : "2018.09.12"
            }
        }
    ]
},{item10:1,_id:0}
).sort({item10:1})

批量修改某个字段

db.getCollection('农业部批发市场数据').find({'loc':{"$eq":null, $exists:false}}).forEach(
   function(item){                
      db.getCollection('农业部批发市场数据').update(
          {"_id":item._id},
          {$set:
          	{"loc":	
             {"lon":Number(item.item14),"lat":Number(item.item15)}
            }
          },{multi:true})
   }
)
db.getCollection('市场基本信息').find({}).forEach(
   function(item){                
      db.getCollection('市场基本信息').update(
          {"_id":item._id},
          {$set:
          	{"item16":	
             {"lon":Number(item.item16.lon),"lat":Number(item.item16.lat)}
            }
          },{multi:true})
   }
)

转换数字为字符串

db.getCollection('农业部批发市场数据').find({'item4':'江苏省盐城市建湖县',item7:{$gt:'20180100'}}).forEach(
   function(item){                
      db.getCollection('农业部批发市场数据').update(
          {"_id":item._id},
          {$set:
          	{"item7":String(item.item7)}
          },{multi:true})
   }
)

拼接截取后的字符串


db.getCollection('农业部批发市场数据').aggregate(  [
    {
	$match : { 
            'item4':'江苏省盐城市建湖县',
            item7:{$gt:'20180100'}	
	}
    },
    {
       $project:
          { item7:1,
            year: { $substr: [ "$item7", 0, 4 ] },
            mon: { $substr: [ "$item7", 4, 2 ] },
            day:{ $substr: [ "$item7", 6, 2 ]} 
          }
     },
    {
       $project:
          { item7:1,
              year:1,
              mon:1,day:1,
          
            date:{$concat:["$year",'-',"$mon",'-',"$day"]}
          }
     }
   ]).forEach(
   function(item){                
      db.getCollection('农业部批发市场数据').update(
          {"_id":item._id},
          {$set:
          	{"item7" : item.date}
          },{multi:true})
   }
)
   
   

为经纬度创建索引

db.getCollection('农业部批发市场数据').ensureIndex( { loc : "2d" } , { min : -500 , max : 500 } )

其他

marker down 生成目录

pandoc -s --toc --toc-depth=6 README.md -o README.md

从大到小排序

du -sh /mnt/home/guaoran/* | sort -nr

git 合并请求 将多次请其次转换为自己的一次

git merge --squash taigu_jingyingzhuti

git 设置 push 多仓库

git remote set-url --add origin https://gitee.com/guaoran/java-commons.git

start.sh

baseDir=$(cd `dirname $0`;pwd;)
nohup java -Dfile.encoding=utf-8 -jar $baseDir/springboot.jar  --server.port=8080  --logging.level.root=info >> $baseDir/logs/spring.log 2>&1 & echo $!> $baseDir/pid

shutdown.sh

baseDir=$(cd `dirname $0`;pwd;)
kill -9  `cat $baseDir/pid`

idea 出现 Cannot Download Sources

mvn dependency:resolve -Dclassifier=sources

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值