以下命令是在自己在工作中用到的linux 汇总(持续更新)
1跨服务器复制
- 1 从 本地 复制到 远程(都是Linux系统时)
scp -r local_file remote_username@remote_ip:remote_folder
- 2 从远程复制到本地
scp -r remote_username@remote_ip:remote_folder locl_folder
3.断点续传
rsync -P --rsh=ssh home.tar 192.168.205.34:/home/home.tar
2. 查看关键字上下多少行并高亮显示
cat filename | grep -C lineNumber --color=auto 'keyWord'
2.1查询多个关键字
grep -E 'keyword1|keyword2|keyword3' log.file
2.2不区分大小写
grep -i 'abc' log.file
2.3 查询关键字之后不包含什么内容
grep 'keyword' log.file | grep -v '不包含的关键字'
3.查看所有java启动的服务
jps-lm
4.根据进程号查询进程所在目录
- 1 使用pwdx命令
pwdx pid
- 2 在进程文件下查找
ll /proc/PID/cwd
5.linux 用命令行登录mysql
mysql -h 远程ip或域名 -p 端口 -u 用户名 -p 密码
6查看服务器某个文件夹下资源所占空间
du -sh * |sort -n
7.赋予文件可执行权限
chmod +x 文件名称 chmod 755
8.更改文件的用户组权限
chown tzszhgl:tzszhgl startup.sh 其中第一个用户是所示用户,第二个是所属组 最后一个文件名称 递归赋权需要加参数-R
9.root用户kill -9 pid 杀不掉进程处理办法:
- 1 查看进程的父进程号
cat /proc/pid/status |grep PPid
- 2 杀掉父进程
kill -9 PPId
10.出现Name or service not known 解决方案
- 1输入hostname 输出结果就是主机名称
- 2 Hostname -i 就可以校验那个ip 主机对应的ip地址
- 3 Vi /etc/hosts 在文本的最后一行
添加一行 ip地址(一般都是127.0.0.1) 主机名称 - 4 vi /etc/sysconfig/network
添加一行hostname=出现问题的hostname
重启服务就可以解决那个问题了
11.备份mysql数据库
mysqldump -u 用户名 -p 密码 --all-databases > /home/mysql/bak.sql
只导出表结构
mysqldump -uroot -p密码 -D abc > abc.sql
12.ssh远程连接 ssh 用户名@服务器ip地址
13.查看大文件
find / -type f -size +200M
14. 查看服务器字符集
locale
15.查看某个端口的链接数
netstat -nat | grep -i "80" | wc -l
16. 统计进程的打开文件数
lsof -p pid | wc -l
17 删除乱码文件/文件夹
- 1 查看乱码文件/文件夹的i节点编号
ls -i
- 2 根据i节点删除文件
find . -inum 535401 -exec rm -rf {} \;
18.删除某文件夹下除去那几个文件
1.删除
ls|egrep -v '(keyword1|keyword2)' |xargs rm -rf
2.复制
cp -r `ls |grep -v keyword1|xargs` ../targetPackage/
19.删除某段时间以前的文件并进行删除
- 1 删除当前目录下 包含.log字段并且创建时间大于15天的文件
find . -ctime +15 -name "*.log*" -exec rm -rf {} \;
- 2 删除15分钟以内创建的包含log的文件
find . -cmin -15 -name "*.log*" -exec rm -rf {} \;
20 mysql unblock with 'mysqladmin flush-hosts’的解决方案
使用命令行连接上数据库然后flush hosts或者重启数据库;
21. linux定时任务 corntab
- 1 查看当前用户的定时任务
crontab -l
- 2 新增/编辑定时任务
crontab -e
22. 查找关键字并替换
grep -ril “查找的关键字” .|xargs -i -t sed -i s#查找的关键字#替换后的关键字#g {}
23.给mysql用户赋权一个新建库的权限
create user 'user'@'%' IDENTIFIED by 'pwd'
create database 数据库名称 ;
grant all privileges on 数据库名称.* to 'hhdev'@'%';
flush privileges ;
24.linux 上执行sql语句
mysql -h xxxxxxx -u username -p -D tmp <xx.sql
-h指定数据库所在计算机地址
-u指定用户
-p指定密码
-D指定库
< 需要执行的文件
25. 替换文件夹中的特定字符
grep -ril '查找的关键字' .|xargs -i -t sed -i s#查找的关键字#替换完的关键字#g {}
26. 查找某个文件夹下的创建时间前十条文件
ls -lt | head -n 10n
27.centos7 防火墙开放端口
firewall-cmd --zone=public --add-port=8180/tcp --permanent
firewall-cmd --reload
28.查看docker 中所有的运行的镜像
docker ps
29.进入docker
docker exec -it 容器id sh
30.docker 复制文件
都是在宿主机中执行
- 从宿主机中复制到docker容器中
格式为docker cp 宿主机文件路径 容器id:/文件夹位置
docker cp /tmp/applicaiton.tar.gz 884d0fbcb9c7:/
- 从docker 容器中复制文件到宿主机中去
格式为docker cp 容器id:/文件位置 宿主机文件夹
31.打印docker 中imager的日志
docker logs -f -n 200 shopxx-b2b2c-application
32.格式化数据盘
mkfs.ext4 /dev/sda2
33. 挂载数据盘
/data 为数据目录这个可以更改
mount /dev/sda2 /data
34.统计文件有多少行
wc -l filname
[root@docker1 ~]# wc -l visits_v1.tsv
1686859 visits_v1.tsv
35.切割文件
a.按照大小切割文件
1、按照10k为大小切分:【 split -b 10k data.txt -d 】
2、按照5M为大小切分:【 split -b 5M data.txt -d 】
说明: -d 指定切割后的文件后缀名为数字
b、按照行数据切割文件
1、以100行作为基本单位切分data.txt文件
【 split -l 100 data.txt result.txt 】
输出文件:result.txtab result.txtac…结尾以 aa ab ac…
2、结尾以数字作为切分的依据
【 split -l 100 data.txt result.txt -d 】
输出文件:result.txt00、result.txt01…
3、指定切割后的文件前缀名与后缀名
【 split -l 100 data.txt-d -a 4 data_ 】
说明:
1)-l 100:按100行切割
2)data_:指定切割后的文件前缀名
3)-d:指定切割后的文件后缀名为数字
4)-a 4:指定切割后的文件后缀名数字的长度
36. docker 与宿主机共用同一目录
docker run-it -v /宿主机绝对路径目录:/容器内目录 镜像名
37.批量删除docker images
docker rmi $(docker images | grep "关键字" | awk '{print $3}')
38.删除所有的docker images
docker rmi $(docker images -q)
40.linux md5生成 和校验
生成md5 并输出到文件中
md5sum filename1 filename2 >file.md5sum
校验文件md5文件是否准确
md5sum -c file.md5sum
41 添加用户同时指定用户id和groupId
useradd -u uid -g gid username
删除特定行
sed 'n,md' 文件名 > 新文件名