有时候,我们在 Shell 运行一个程序,把 Shell 窗口关掉,或者按 Control+C 关闭的时候,程序也会 kill 掉了,实际我们需要让他们在后台运行,并把它的控制台输出重定向到某个日志文件,可以这样做: /path/to/executable >/var/log/log1.log 2>&1 & #如果不要日志,/var/log/log1.log改成/dev/null #例如 java -jar /path/to/xxx.jar >/dev/null 2>&…
有时候,我们在 Shell 运行一个程序,把 Shell 窗口关掉,或者按 Control+C 关闭的时候,程序也会 kill 掉了,实际我们需要让他们在后台运行,并把它的控制台输出重定向到某个日志文件,可以这样做: /path/to/executable >/var/log/log1.log 2>&1 & #如果不要日志,/var/log/log1.log改成/dev/null #例如 java -jar /path/to/xxx.jar >/dev/null 2>&…
场景:需要检查某个命令输出里包含某个字符串,有的话再执行下一步,没有的话,就说明脚本执行错误,需要发送提醒等等 简单的脚本举例如下: #检查/usr/local/sbin/ipsec auto --status的命令是否包含"IPsec SA established" /usr/local/sbin/ipsec auto --status | grep 'IPsec SA established' &> /dev/null if [ $? == 0 ]; then echo "matched" els…
我们在写 Shell 脚本的时候,cp 复制或mv移动的时候,因为要启用后台运行,想要处理已存在文件的时候,直接覆盖,而不要跳出确认。可是无论是否你加了-f参数,还是会提示是否覆盖。 经研究过后发现,是因为在~/.bashrc 加了如下,-i 是强制提示 alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' 解决的办法有4个,以cp 为例,其他命令类似 直接输入命令,在cp前加上\即可实现,例如: \cp -fR /tmp/data/* /opt/data/ 利用管道…
有时候,我们需要在Linux服务器里挂载其他服务器共享出来的NFS网络位置,或者NAS里分享出来的NFS/Samba网络位置,还有Windows下分享的共享位置。 MacOS挂载Windows里分享的Samba位置,请查看:https://blog.terrynow.com/2021/05/16/macos-access-windows-samba-share-specific-user-domain-hidden-share-etc/ 以192.168.1.1把/var/share 共享给192.168.1.2为…
有时候需要执行脚本的时候,需要模拟人为操作需要等待几秒钟后执行,但又不能是固定的等待时间,可以使用如下随机等待几秒钟: #!/bin/bash echo "开始随机等待 1-10 秒..." # 1-10秒内随机 sleep $[ ( $RANDOM % 10 ) + 1 ] echo "等待后继续"
很多时候,我们写Shell脚本的时候,需要下载文件、根据是否下载到文件后(文件是否存在)来判断下一步的操作。 在Bash里,可以使用test来判断文件/文件夹是否存在,格式如下 test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]] 两个括号会比较常用,不过都可以试试 FILE=/opt/test.txt if [ -f "$FILE" ]; then echo "$FILE exists." fi #if else FILE=/opt/test.txt if [ -f "$…
编写Linux脚本的时候,有时需要等待用户输入变量,然后根据变量不同来执行接下来的操作, 举例如下: #!/bin/sh echo -n "Enter file name and press [ENTER]: " read file_name echo "file name is: $file_name" if [ -z "$file_name" ]; then echo 'empty file name, exit' else #执行接下来的操作 #... fi
#Ubuntu cat /etc/lsb-release #CentOS cat /etc/redhat-release #or lsb_release -a uptime top #内存(按MB) free -m #内存(按GB) free -g #硬盘 df -h netstat -ant #查看谁在使用端口8080 lsof -i:8080 hostname #CentOS hostnamectl status date
#查看CPU信息 cat /proc/cpuinfo #查看CPU统计信息 lscpu #归纳 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c #输出如下(看到有8个逻辑CPU, 也知道了CPU型号) 8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz #详细的 cat /proc/meminfo #简单的 free #内存单位是MB free -m #内存单位是GB free -g #查看内存硬件信息 dmidecode -t …
数据无价,服务器运行中,如果不做备份,总觉得心理毛毛的,每天备份还是很有必要的,以Linux为例,利用crontab定时任务,每天备份服务器数据,如果有MySQL服务,也dump一份数据,在本地服务器上保留3天的备份,方便有数据误删除等,可以随时恢复;最后也要将数据复制到其他远程服务器,或者网盘(例如Google Drive),防止服务器发生以外导致数据丢失。 脚本用到的rar程序下载,Linux版本,请到https://www.rarlab.com/download.htm #! /bin/sh #当天时间,比如…