@[TOC] Linux常用命令
整理完后发现,成了个大杂烩,有空着再分分类吧,同学们先将就看:
扫描指定IP在指定范围内的端口:
nmap -v -A 192.168.1.1 -p1-65535
打印第N列之后的所有列:
ll|awk '{for(i=1;i<=4;i++){$i=""}; print $0 }'
命令列出所有用户:
cat /etc/passwd |cut -f 1 -d :
查看 XXX 用户下的定时任务
crontab -l -u XXX
crontab -e 编辑用户下的定时任务
1、创建test.sh文件
touch test.sh
2、编辑sh文件
vi test.sh
编辑文件 时:
光标移动:上下左右 k j h l
删除 x
删除整个单词(光标-末尾) dw
從當前光標刪除到行末 d$
删除当前行 dd
插入 i
不保存退出 :q!
保存并退出。 :wq或ZZ
撤销 u
替换 r* *表示被替换的字符
快速删除单词替换 cw
全局替换 😒/(old)/(new)/g
打开新的一行并输入 o
3、保存退出
敲击esc, 然后输入 :wq ,回车退出
4、添加可执行权限,当然默认就是可执行的。
chmod +x test.sh
5、运行文件
./test.sh
或者
sh test.sh
6、删除文件
rm test.sh
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
查看文件大小
du -sh *
或者
du -sh ./*
服务重启
service mysql restart
或
systemctl restart mysql
查看数据库服务状态
service mysql status
或
systemctl restart mysql
重启系统
shutdown -r now
查找当前路径下的100天以内的文件并列出:
find . -name BSEG*.txt -mtime -100 -exec ls -l {} \;
带权限复制:
cp /var/spool/mail/root /var/ftp/pub/log -p
当前路径中搜索包含指定字符串的文件:
grep -l 'mall_user_order_head' ./*
查找文件名后缀为log,且大于1G的文件
find ./ -name "*.log" -size +10000000k
将各个目录分别压缩到文件:
ll|grep -E "^d"|awk '{print $9}'|xargs -i tar zcvf {}.tar.bz2 {}
创建用户,赋予表权限##############################
mysql -uroot -p123456
DROP USER 'dbuser'@'%';
DROP PROCEDURE IF EXISTS LOGINUSER;
CREATE USER 'dbuser'@'%';
DELIMITER //
CREATE PROCEDURE LOGINUSER()
BEGIN
SELECT USER(),CURRENT_USER();
SELECT CONCAT(CURRENT_DATE(),' ',CURRENT_TIME());
END;
//
DELIMITER ;
SET @@global.init_connect='CALL LOGINUSER();';
create user 'dbuser'@'%' identified by 'dbuser';
grant select on mysql.* to 'dbuser'@'%' identified by 'dbuser';
grant SUPER on *.* to 'dbuser'@'%';
show grants for dbuser; # 结果:
| GRANT SUPER ON *.* TO 'dbuser'@'%' |
| GRANT SELECT ON `mysql`.* TO 'dbuser'@'%' |
| GRANT ALL PRIVILEGES ON `db1`.* TO 'dbuser'@'%' |
定义服务:
cat /etc/systemd/system/bookstack.service
- 内容:
[Unit]
Description=BookStack service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/nginx/html/bookstack/
ExecStart=/bin/sh -c '/usr/local/nginx/html/bookstack/BookStack >> /var/log/bookstack.log'
[Install]
WantedBy=multi-user.target
双网卡网络配置:
线路1外网:光猫->服务器网卡enp1s0f1
线路2内网:光猫->路由器-核心交换机->服务器网卡enp1s0f0
路由配置:
route add -net 172.16.0.0/16 gw 192.168.11.1 dev enp1s0f0
route add -net 192.168.1.0/24 gw 192.168.11.1 dev enp1s0f0
或者在/etc/sysconfig/network-scripts/static-routes添加:
any net 172.16.0.0/16 gw 192.168.11.1
any net 192.168.1.0/24 gw 192.168.11.1
检查可疑挖矿病毒miner进程,每隔5分钟执行:
crontab -e
加入
*/5 * * * * ps -ef|grep minerd|awk '{print $2}'|xargs kill -9
安全策略:
锁定crontab,避免被恶意程序修改:
chattr +ia /var/spool/cron
升级glibc的时候遇到致命错误,命令失效报错,使用sln命令:
sln /lib64/libc-2.29.so /lib64/libc.so.6
符合条件的指定分隔符下的列,并去重复:
cat access.log |grep “14.18”|awk -F " " ‘{print $1}’|sort -u
输出重定向
1>&2 正确返回值传递给2输出通道 &2表示2输出通道
如果此处错写成 1>2, 就表示把1输出重定向到文件2中.
2>&1 错误返回值传递给1输出通道, 同样&1表示1输出通道.
举个例子.
$ ls a.txt b.txt 1>file.out 2>&1
$ cat file.out
ls: b.txt: No such file or directory
a.txt
现在, 正确的输出和错误的输出都定向到了file.out这个文件中, 而不显示在前端.
补充下, 输出不只1和2, 还有其他的类型, 这两种只是最常用和最基本的.
查看已经删除,仍被进程占用没有释放空间的文件相关信息
lsof | grep delete
保存、恢复iptables规则
iptables-save > iptablesrules
iptables-restore < iptablesrules
批量umount挂载点:
umount $(df -HT | grep '/var/lib/kubelet/pods' | awk '{print $7}’)
gofastdfs: 上传后遇到返回的url不含端口号
可能是需要修改如下位置,即不能删掉末尾的/:
查看磁盘及挂载目录:
lsblk
VM虚拟机磁盘扩容
参考https://blog.youkuaiyun.com/qq_45656020/article/details/124387750:
fdisk -l
fdisk /dev/vda # n创建,primary分区,分区号选默认,w写入
vgdisplay
reboot # 重启服务器,谨慎操作
fdisk -l
lsblk
vgdisplay
pvdisplay
pvcreate /dev/vda3
pvdisplay
vgextend centos /dev/vda3
vgdisplay
lvextend /dev/mapper/centos-home /dev/vda3
xfs_growfs /dev/mapper/centos-home
而对于非LVM方式挂载磁盘:
https://baijiahao.baidu.com/s?id=1729517367041260855&wfr=spider&for=pc
可以批量生成docker push命令的命令
docker image ls|grep 123|awk '{print "docker push "$1":"$2}’
批量生成helm 删除已部署实例的命令
helm list -A|awk '{print "helm delete "$1,"-n "$2}'|grep -Ev "produce1|default|harbor|prod|dev|dashboard|ms|NAME”
SVN基础命令:
检出代码:
svn checkout https://192.168.1.1:1443/svn/code --username u1 --password pwd1
找出可用空间最大的挂载点:
df -T|awk ‘{print $5,$7}’ |sort -nr|awk ‘{print $2}’|head -n 1