Linux一些小技巧

技巧集

说明

本文是在CentOS系统使用,其他操作系统可能会有一些不适用。

1.一句话修改密码

使用echo命令,可以实现很方便、快捷地修改用户密码

  • 语法
1
# echo password | passwd --stdin username
  • 示例

    修改用户名 testerzhang,密码改成123456

1
2
3
# echo "123456" | passwd --stdin testerzhang
Changing password for user testerzhang.
passwd: all authentication tokens updated successfully.

2.shell脚本执行MySQL语句

1
2
3
4
5
6
7
#!/bin/bash 
 
mdn="110"

mysql -h10.10.10.10 -P3338 -utesterzhang -ptesterzhanghello mydbname <<EOF
update user set phone='' where phone='$mdn';
EOF

3.Shell获取中间某一个函数的耗时

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/bin/bash

startTime=`date +%Y%m%d-%H:%M:%S`
startTime_s=`date +%s`

这里写你要执行的命令

endTime=`date +%Y%m%d-%H:%M:%S`
endTime_s=`date +%s`

sumTime=$[ $endTime_s - $startTime_s ]

echo "$startTime ---> $endTime" "Total:$sumTime seconds"

4. zip加密压缩

压缩test文件夹,压缩名test.zip, 密码123456

1
$ zip -rP 123456 test.zip test

5.查看当前隐藏文件夹占用空间

1
# du -hs .[!.]*

6.nohup生成指定文件

$ nohup ./start.sh &    默认输出到nohup.out文件

$ nohup ./start.sh >output 2>&1 &   指定输出到output文件

$ nohup ./start.sh >>output 2>&1 &  指定追加日志输出到output文件

7.curl基本认证

$ curl -u user:password http://www.example.com

8.curl发送请求头header参数值为空的方法

如何设置请求头有kk: 值为空?加个分号

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
$ curl -v -I  "http://192.168.137.200:5000/" -H "kk;"
*   Trying 192.168.137.200...
* TCP_NODELAY set
* Connected to 192.168.137.200 (192.168.137.200) port 5000 (#0)
> HEAD / HTTP/1.1
> Host: 192.168.137.200:5000
> User-Agent: curl/7.61.1
> Accept: */*
> kk:
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< content-type: text/html; charset=utf-8
content-type: text/html; charset=utf-8
< content-length: 8238
content-length: 8238
< date: Mon, 01 Jul 2024 03:03:57 GMT
date: Mon, 01 Jul 2024 03:03:57 GMT

9.wget后台断点续传

1
$ wget -b -c http://xxx

10.rsync断点续传

这里的例子ssh端口是非22端口

1
$ rsync  -avuP --rsh='ssh -p2345' <sourcefile> user@host:/path/to/destination/directory

11.清理30天前的文件

能清理带有空格的文件

1
2
3
4
5
6
#!/bin/bash

clean_time=30

# 下面清理的是./ 当前目录下30天前的文件
find ./ -type f -mtime "+$clean_time" -print0|xargs -0 rm

12.ssh只允许某些IP才可以root登录

修改/etc/ssh/sshd_config 文件,末尾增加此配置项

  • 只允许192.168.1.100的IP可以使用root用户ssh登录,其他IP不允许使用root用户ssh登录
1
2
3
4
5
6
## Block root login to every one ##
PermitRootLogin no
 
## allow root login  for 192.168.1.100 ##
Match Address 192.168.1.100
        PermitRootLogin yes
  • 如果要阻止IP段,可以这么配置
## Block root login to every one ##
PermitRootLogin no

Match Address 192.168.1.0/24
        PermitRootLogin yes

测试语法对不对

1
#  sshd -T

没问题然后重启ssh服务即可。

1
# service sshd restart

13.crontab和nohup结合日志输出问题

13.1 现象

现在有一个脚本start.sh,手工执行可以正常输出到nohup.out文件,经过crontab配置后,到了指定时间允许原本脚本应该输出到nohup.out,结果变成输出到了该定时任务的输出文件start.log里。

13.2 脚本内容

  • start.sh
1
2
3
source ~/.bash_profile >/dev/null 2>&1

nohup python3 server.py &
  • crontab配置
*/1 * * * * (cd /home/testerzhang/server/py_server; ./start.sh) >> /home/testerzhang/server/py_server/start.log 2>&1 &

13.3 解决办法

此时需要做的事情,改造start.sh脚本

  • start.sh
1
2
3
source ~/.bash_profile >/dev/null 2>&1

nohup python3 server.py >>/home/testerzhang/server/py_server/nohup.out 2>&1 &

欢迎关注我的公众号testerzhang,原创技术文章第一时间推送。

公众号二维码

updatedupdated2024-08-122024-08-12