本文包含以下内容:定时备份数据 mysql rabbitmq ubuntu安装解决依赖问题 RabbitMQ 的 Socket descr
ubuntu 工作常见问题1 定时备份数据 mysql 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 BACKUP_DIR ="/backup/mysql" MYSQL_USER ="root" MYSQL_PASSWORD ="password" DATE =$(date +%Y-%m-%d_%H-%M-%S) BACKUP_FILE ="$BACKUP_DIR/mysql_backup_$DATE.sql.gz" LOG_FILE ="/backup/backup.log" sudo mkdir -p $BACKUP_DIR sudo chown mysql:mysql $BACKUP_DIR sudo echo "Backup started at $(date)" >> $LOG_FILE if sudo mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases |sudo gzip > $BACKUP_FILE sudo echo "Backup completed successfully at $(date)" >> $LOG_FILE else sudo echo "Backup failed at $(date)" >> $LOG_FILE fi sudo find $BACKUP_DIR -type f -mtime +7 -name "*.sql.gz" -exec sudo rm {} \ sudo echo "Backup process finished at $(date)" >> $LOG_FILE ctontab -e 0 2 * * 1,4 /mysql_back.sh 导入数据需要 mysql -uroot -proot >*.sql 不能用navicat ------------------------------------------------------------------------------------ 以 .gz 结尾的文件通常是使用 gzip 压缩的文件。解压这些文件,你可以使用 gunzip 或 gzip -d 命令。以下是几种方法来解压 .gz 文件: 使用 gunzip bash 复制代码 gunzip filename.gz 这将解压 filename.gz 文件,并生成一个 filename 文件。 使用 gzip -d bash 复制代码 gzip -d filename.gz 这也将解压 filename.gz 文件,并生成一个 filename 文件。 解压并保留原始文件 如果你希望解压文件但保留原始的 .gz 文件,可以使用 zcat、gzip -cd 或者 gunzip -c 命令将其输出到新的文件中: bash 复制代码 zcat filename.gz > filename 或者 bash 复制代码 gzip -cd filename.gz > filename 或者 bash 复制代码 gunzip -c filename.gz > filename
rabbitmq 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 BACKUP_DIR ="/backup" BACKUP_FILE ="$BACKUP_DIR/rabbitmq-backup-$(date +%Y%m%d%H%M%S).tar.gz" mkdir -p $BACKUP_DIR sudo systemctl stop rabbitmq-server tar -czvf $BACKUP_FILE /var/lib/rabbitmq/* sudo systemctl start rabbitmq-server find $BACKUP_DIR -type f -mtime +7 -name '*.tar.gz' -exec rm {} \ echo "Backup completed: $BACKUP_FILE"
ubuntu安装解决依赖问题 1 2 sudo apt install aptitude
RabbitMQ 的 Socket descriptors 饱满(连接数) 1. 增加系统文件描述符限制 首先,需要增加系统允许的最大文件描述符限制。
修改 /etc/security/limits.conf 文件:
1 2 3 bash 复制代码sudo nano /etc/security/limits.conf
在文件末尾添加以下内容:
1 2 plaintext 复制代码rabbitmq soft nofile 65536 rabbitmq hard nofile 65536
2. 修改系统配置文件
编辑 /etc/sysctl.conf 文件:
1 2 3 bash 复制代码sudo nano /etc/sysctl.conf
添加或修改以下配置项:
1 2 3 plaintext 复制代码 fs.file -max = 100000
应用更改:
1 2 3 bash 复制代码sudo sysctl -p
3. 修改 RabbitMQ 服务配置 确保 RabbitMQ 服务使用正确的文件描述符限制。
创建或编辑 /etc/systemd/system/rabbitmq-server.service.d/limits.conf 文件:
1 2 bash复制代码sudo mkdir -p /etc/systemd/system/rabbitmq-server.service.d/sudo nano /etc/systemd/system/rabbitmq-server.service.d/limits.conf
添加以下内容:
1 2 plaintext复制代码[Service]LimitNOFILE = 65536
4. 修改 RabbitMQ 配置文件
打开 RabbitMQ 配置文件:
1 2 3 bash 复制代码sudo nano /etc/rabbitmq/rabbitmq.conf
添加或修改以下配置项:
1 2 plaintext复制代码 tcp_listen_options.backlog = 4096
5. 重载并重启服务
重新加载 systemd 配置:
1 2 3 bash 复制代码sudo systemctl daemon-reload
重启 RabbitMQ 服务:
1 2 3 bash 复制代码 sudo systemctl restart rabbitmq-server
6. 验证配置
验证 RabbitMQ 服务状态:
1 2 3 bash 复制代码 sudo systemctl status rabbitmq-server
查看当前文件描述符限制:
1 2 3 bash 复制代码sudo rabbitmqctl status
在 rabbitmqctl status 的输出中,你应该能看到类似如下的信息,确认文件描述符数量已经被修改:
1 2 3 4 5 plaintext复制代码 {file_descriptors, [{total_limit, 65536} , {total_used, 50} , {sockets_limit, 58880} , {sockets_used, 45} ]}
通过以上步骤,你应该能够解决 RabbitMQ Socket descriptors 饱满的问题。如果问题仍然存在,请检查 RabbitMQ 日志文件(通常位于 /var/log/rabbitmq/)以获取更多详细的错误信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 1. 检查当前文件描述符配置 运行以下命令,查看当前 RabbitMQ 的文件描述符限制: rabbitmqctl status | grep file_descriptors 示例输出: {file_descriptors, [{total_limit, 1024}, {total_used, 500}, {sockets_limit, 829}, {sockets_used, 400}] } total_limit 是文件描述符的总限制。 sockets_limit 是用于网络连接的限制。 如果当前的 total_limit 比您期望的值低(如 65536),需要调整以下设置。 2. 修改系统文件描述符限制 RabbitMQ 的文件描述符限制受操作系统的配置影响。需要修改操作系统的 nofile(文件描述符)参数。 2.1 临时修改(当前会话有效) 运行以下命令: ulimit -n 65536 2.2 永久修改(推荐) 编辑系统的限制配置文件: sudo nano /etc/security/limits.conf 为 RabbitMQ 用户添加以下行: rabbitmq soft nofile 65536 rabbitmq hard nofile 65536 确保 PAM 模块启用了限制支持: 编辑 /etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive: sudo nano /etc/pam.d/common-session sudo nano /etc/pam.d/common-session-noninteractive 添加: session required pam_limits.so 重启系统以应用更改: sudo reboot 3. 为 RabbitMQ 服务设置更高的限制 如果 RabbitMQ 是通过 systemd 管理的服务,还需要修改 systemd 的文件描述符限制。 编辑 RabbitMQ 的服务配置: sudo systemctl edit rabbitmq-server 添加以下内容:[Service] LimitNOFILE =65536 保存文件后,重新加载 systemd 并重启 RabbitMQ 服务: sudo systemctl daemon-reload sudo systemctl restart rabbitmq-server 4. 验证修改结果 再次运行以下命令,查看文件描述符限制是否更新: rabbitmqctl status | grep file_descriptors 示例输出: {file_descriptors, [{total_limit, 65536}, {total_used, 500}, {sockets_limit, 829}, {sockets_used, 400}] } 如果 total_limit 已达到预期值,则修改成功。
内网安装mysql 1 https://blog.csdn.net/weixin_44842318/article/details/136200647
最新MySQL备份 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 BACKUP_DIR ="/home/xydata/backup/" MYSQL_USER ="root" MYSQL_PASSWORD ="root" DATE =$(date +%Y-%m-%d_%H-%M-%S) BACKUP_FILE ="$BACKUP_DIR/mysql_backup_$DATE.sql.gz" LOG_FILE ="/home/xydata/backup/backup.log" mkdir -p $BACKUP_DIR echo "Backup started at $(date)" | tee -a $LOG_FILE > /dev/null if mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases | gzip > $BACKUP_FILE echo "Backup completed successfully at $(date)" | tee -a $LOG_FILE > /dev/null else echo "Backup failed at $(date)" | tee -a $LOG_FILE > /dev/null fi sudo find $BACKUP_DIR -type f -mtime +7 -name "*.sql.gz" -exec rm {} \ echo "Backup process finished at $(date)" | tee -a $LOG_FILE > /dev/null
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 BACKUP_DIR ="/home/xydata/backup/" MYSQL_USER ="root" MYSQL_PASSWORD ="root" DATE =$(date +%Y-%m-%d_%H-%M-%S)BACKUP_FILE ="$BACKUP_DIR/mysql_backup_$DATE.sql.gz" LOG_FILE ="/home/xydata/backup/backup.log" mkdir -p $BACKUP_DIR echo "Backup started at $(date)" | tee -a $LOG_FILE > /dev/null if mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases | gzip > $BACKUP_FILE echo "Backup completed successfully at $(date)" | tee -a $LOG_FILE > /dev/null else echo "Backup failed at $(date)" | tee -a $LOG_FILE > /dev/null fi find $BACKUP_DIR -type f -mtime +7 -name "*.sql.gz" -exec rm {} \ echo "Backup process finished at $(date)" | tee -a $LOG_FILE > /dev/null crontab -e 0 2 * * 1,4 bash /home/xydata/mysql_back.sh
通用脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 services =( "ydsy:7777:/home/xydata/app/jars/ydsy/*.jar:/home/xydata/app/bin/ydsy.log" "ps:8888:/home/xydata/app/jars/ps/*.jar:/home/xydata/app/bin/ps.log" "yj:9999:/home/xydata/app/jars/yj/*.jar:/home/xydata/app/bin/yj.log" )template_script_content ='#!/bin/bash # 检查是否提供了必要的参数 if [ $# -ne 4 ]; then echo "Usage: $0 <service_name> <port> <jar_path> <log_path>" exit 1 fi # 参数 SERVICE_NAME=$1 PORT=$2 JAR_PATH=$3 LOG_PATH=$4 # 定义JAVA_HOME和其他环境变量 export JAVA_HOME=/var/opt/jdk1.8.0_144 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH echo "Processing $SERVICE_NAME on port $PORT..." # 杀掉占用指定端口的进程 kill -9 $(netstat -nlp | grep :$PORT | awk ' \'' {print $7 }'\'' | awk -F"/" '\'' { print $1 }'\'' ) sleep 3 nohup java -Xmx2048m -Xms2048m -jar $(ls -l $JAR_PATH | awk '\''{print $9}'\'' | tail -n 1) --server.port =$PORT > $LOG_PATH & sleep 3 tail -f $LOG_PATH ' echo "$template_script_content" > start_service_template.sh chmod +x start_service_template.sh for service_info in "${services[@] }" IFS =':' read -r service port jar_path log_path <<< "$service_info" service_script_content ="#!/bin/bash # 服务的变量 SERVICE_NAME=\"$service\" PORT=$port JAR_PATH=\"$jar_path\" LOG_PATH=\"$log_path\" # 调用通用模板脚本 $(pwd)/start_service_template.sh \$SERVICE_NAME \$PORT \$JAR_PATH \$LOG_PATH " service_script_path ="$(pwd)/start_$service.sh" echo "$service_script_content" > "$service_script_path" chmod +x "$service_script_path" done echo "生成完毕"
方德缩小置顶 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 方德系统 软件缩小不能置顶 ChatGPT 在方德系统(Deepin或其衍生系统,如UOS)中,遇到软件窗口缩小后无法置顶的问题,可能是由于窗口管理器或系统设置的问题。以下是一些步骤和方法,可以帮助你解决这个问题: 检查和调整窗口管理器设置 方德系统使用的是Deepin桌面环境,它的窗口管理器可能有一些设置可以调整。 1. 使用Deepin设置中心 Deepin桌面环境提供了一个用户友好的设置中心,允许你调整窗口管理器的行为。 打开Deepin设置中心: 点击屏幕右下角的设置图标,或者从应用菜单中选择“设置”。 调整窗口管理设置: 在设置中心,导航到“窗口管理”部分。 检查并调整“窗口置顶”或“窗口管理”相关的选项,确保启用了窗口置顶功能。 2. 使用Deepin Tweaks工具 Deepin Tweaks是一个第三方工具,可以帮助你微调Deepin桌面环境的设置。 安装Deepin Tweaks: sh sudo apt install deepin-tweaks 启动Deepin Tweaks: 在应用菜单中找到并启动Deepin Tweaks。 调整窗口设置: 在Deepin Tweaks中,找到与窗口管理相关的设置,并进行调整,确保窗口可以置顶。 使用快捷键 有时,通过快捷键可以快速解决窗口管理问题。 切换窗口置顶状态: 选中窗口后,使用快捷键Alt + F3打开窗口菜单,然后选择“始终在最前”。 切换窗口状态: 使用快捷键Alt + Space打开窗口控制菜单,检查是否有“置顶”选项。 检查系统更新 确保你的系统和窗口管理器是最新版本,更新系统可能解决一些已知问题。 更新系统: sh sudo apt update sudo apt upgrade 重启窗口管理器 有时,重启窗口管理器可以解决一些临时问题。 重启Deepin窗口管理器: sh killall dde-kwin 窗口管理器会自动重启,尝试再次进行窗口置顶操作。 重新配置窗口管理器 如果上述方法都无效,你可以尝试重新配置或重置窗口管理器的设置。 重置Deepin窗口管理器配置: sh mv ~/.config/deepin/dde-kwin/ ~/.config/deepin/dde-kwin.bak 重启窗口管理器: sh killall dde-kwin 这样做会将窗口管理器的配置重置为默认状态,看看是否解决了窗口无法置顶的问题。 使用命令行工具 在一些情况下,你可以使用命令行工具强制设置窗口置顶。 安装wmctrl工具: sh sudo apt install wmctrl 使用wmctrl设置窗口置顶: sh wmctrl -r :ACTIVE: -b add,above 这将把当前活动窗口置顶。 通过以上方法,你应该能够解决方德系统中软件窗口缩小后无法置顶的问题。如果问题仍然存在,建议查看相关系统文档或联系方德系统的技术支持获取进一步帮助。
开机自启服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 visudo xydata ALL =(ALL) NOPASSWD: ALL 给xydata用户免密 在/etc/rc.loccal里面SCRIPT_DIR ="/home/xydata/app/bin/" for script in "$SCRIPT_DIR"/*.sh do if [ -f "$script" ] if [ ! -x "$script" ] chmod +x "$script" fi sudo -u xydata "$script" & sleep 10 fi done exit 0 sudo chmod a+x /etc/rc.local
无法显示文件扩展名 1 2 3 4 5 6 7 8 按下 Win + R 键,调出运行对话框。 在运行对话框中输入以下命令并按回车: control folders 这将直接打开“文件夹选项”窗口。 在“文件夹选项”中设置显示文件后缀: 在“文件夹选项”窗口中,切换到 “查看” 选项卡。 在“高级设置”列表中,找到并取消勾选 “隐藏已知文件类型的扩展名” 选项。 点击 “应用”,然后点击 “确定”。
无法自动启动win服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 打开注册表编辑器: 按下 Win + R 键,输入 regedit 并按回车,打开注册表编辑器。 定位到注册表项: 如果你想为当前用户设置开机自启动,定位到: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 如果你想为所有用户设置开机自启动,定位到: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 创建新的字符串值: 右键点击右侧空白处,选择“新建” -> “字符串值”。 将新建的字符串值命名为你想要的名称,例如 LEDStartup。 设置文件路径: 双击刚刚创建的字符串值,在“数值数据”中输入以下内容: makefile 复制代码 E:\LED\LED.exe 如果路径中有空格,需要用引号括起来,但你的路径中没有空格,所以直接输入即可。 保存设置并退出注册表编辑器。
配置supervisor 管理服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 1.sudo apt update && sudo apt install supervisor 安装supervisr 2.vim /etc/supervisor/supervisord.conf [inet_http_server] port =*:9001 username =adminpassword =admin 9001是web页面 admiin是账号密码 systemctl restart supervisor supervisorctl reload 3 /etc/supervisor/conf.d 下编辑一个以conf结尾的文件[program:menzhen] directory =/home/xydata/app/bin command =/home/xydata/manager/manager.shuser =xydata autostart =true autorestart =false startretries =3 stderr_logfile =/var/log/menzhen_service.log stdout_logfile =/var/log/menzhen_service.log stopasgroup =true killasgroup =true upervisorctl stop program_name 停止某个进程 supervisorctl start program_name 启动某个进程 supervisorctl restart program_name 重启某个进程 supervisorctl stop all 停止全部进程 supervisorctl reread 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启 supervisorctl avail supervisorctl status 定义脚本 /usr/local/src/jdk1.8.0_311/bin/java -Xmx2048m -Xms2048m -jar `ls -l /home/xydata/manager/*.jar | awk '{print $9}' | tail -n 1` --server.port =8888
麒麟离线安装服务(centos) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1. 在有网的地方安装 createrepo yum install createrepo -y 2. 创建安装的目录位置 mkdir /home/xydata/supervisor 3. 下载需要的服务 yum install --downloadonly --downloaddir =/home/xydata/supervisor supervisor createrepo /home/xydata/supervisor tar cvzf superviosr.tar.gz supervisor 4.制作yum源 cd /etc/yum.repo.d/ mkdir back mv ./* back vim local.repo[local] name =localbaseurl =file:///home/xydata/supervisorenabled =1 gpgcheck =0 yum clean all yum makecache 5. 在离线的机子上 上传包然后安装 yum install --enablerepo =local supervisor
ubuntu离线安装服务 1 2 3 4 5 6 1. 在有网的服务器 /var/cache/apt/archives 是默认的安装包缓存地址 rm -rf /var/cache/apt/arcjoves/* 清空原本的缓存 最好先备份一下 apt -d -f install supervisor -d 标识仅下载不安装,-f 是自动解决依赖问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2. mkdir /home/xydata/supervisor cp -r /var/cache/apt/archives/* /home/xydata/supervisor cd /home/xydata/supervisor rm -rf partial/ lock apt-ftparchive packages . > Packages apt-ftparchive release . > Release cd../ tar -cvf supervisor.tar.gz supervisor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 3. mkdir /home/xydata/ tar xf supervisor.tar.gz mv /etc/apt/sources.list /etc/apt/sources.list.bak echo "deb [trusted=yes] file:/home/xydata/supervisor ./" >>/etc/apt/sources.list apt update apt install -y supervisor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 4. 1. 重装 使用 --reinstall 即可 例如 重装 build-essential apt -f -y install --reinstall build-essential 2. 查看已经安装的软件 apt list --installed 配合grep筛选 3.卸载 apt-get remove 保留配置文件)、 apt-get purge (彻底删除) 4. 搜索 apt search 五. dpkg 的常用参数 dpkg 不会自动处理依赖问题 1. 安装软件 dpkg -i *.deb 可以直接制定deb文件的名称;但有时候会因为缺少依赖而安装失败; 2. 查看已安装的软件 dpkg -l 配合 grep 管道来进行查询 3. 卸载软件 dpkg -r (保留配置文件)、 dpkg -P (彻底删除)
脚本启动 1 2 3 4 5 6 7 8 9 export JAVA_HOME =/var/opt/jdk1.8.0 _144 export JRE_HOME =${JAVA_HOME} /jre export CLASSPATH =.:${JAVA_HOME} /lib:${JRE_HOME} /lib export PATH =${JAVA_HOME} /bin:$PATH kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }') sleep 3 nohup java -jar -Xmx2048m -Xms2048m `ls -l /home/xydata/app/jars/queue/*.jar | awk '{print $9}' | tail -n1` --server.port =8080 > /home/xydata/app/bin/queue.log &