在工作中遇到的有关Linux的问题
网络 ifconfig 个字段的含义 此linux服务器为:kylin
接口名称
类型
用途
enp180s0f2
物理以太网接口
物理网络连接
enp25s0f0
物理以太网接口
物理网络连接
vethd989592
虚拟以太网接口对
容器/虚拟机网络通信
vethdc1bcea
虚拟以太网接口对
容器/虚拟机网络通信
virbr0
虚拟网桥
虚拟机NAT网络
关闭防火墙 以下是图片内容转换成的可复制Markdown格式:
命令行界面输入命令 systemctl status firewalld.service 并按下回车键。
在下方查看输出结果,若显示 active (running),说明防火墙已开启。
输入关闭防火墙命令:
1 systemctl stop firewalld.service
再次检查防火墙状态:
1 2 3 4 5 6 7 systemctl status firewalld.service ``` 若出现 `inactive (dead)`,说明防火墙已关闭。 5. 永久禁用防火墙服务: ```bash systemctl disable firewalld.service
环境 python环境配置 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 # 1. 更新本地软件包索引(让 apt 知道有哪些最新版本的软件包可用) apt update # 2. 安装 Python 虚拟环境管理工具(python3-venv),-y 表示自动确认安装 apt install -y python3-venv # 3. 创建项目目录(-p 确保父目录存在,若目录已存在也不会报错) mkdir -p /opt/meeting-file-sync # 4. 进入项目目录 cd /opt/meeting-file-sync # 5. 在该目录下创建一个名为 venv 的 Python 虚拟环境 # (这是独立于系统的 Python 环境,避免污染系统 Python) python3 -m venv venv # 6. 激活虚拟环境(激活后,终端前缀会显示 (venv),且 python/pip 都指向虚拟环境) source venv/bin/activate # 7. 升级虚拟环境中的 pip 到最新版本(确保安装包时兼容性更好) pip install --upgrade pip # 8. 在虚拟环境中安装 pymysql 和 requests 包(不会影响系统全局) pip install pymysql requests # 9. 测试python环境 python -c "import pymysql, requests; print('OK')" # 10. 测试需要下载的文件网络环境 curl -I "https://file.scjwwd.com.cn/zhjz24/20260811/2211731245568.JPG"
安装FTP 外网安装 1 2 3 4 5 6 7 8 9 10 11 12 sudo apt updatesudo apt install vsftpd -ysudo systemctl status vsftpdvim /etc/vsftpd.conf
vsftpd.conf 需要修改的配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 允许上传文件(写入权限),若设为 NO 则只读 write_enable=YES # 允许对 chroot 目录有写权限。当 chroot_local_user=YES 时, # 如果用户家目录本身可写,默认会拒绝登录。开启此项可解除限制。 allow_writeable_chroot=YES # 将本地用户禁锢在各自的家目录中,防止越权访问其他系统目录,提升安全性 chroot_local_user=YES # 启用被动模式(PASV),适用于客户端位于防火墙/NAT 后的场景 pasv_enable=YES # 被动模式数据端口范围(最小端口),甲方安全策略指定从 30002 开始 pasv_min_port=30002 # 被动模式数据端口范围(最大端口),甲方安全策略指定到 31000 结束 pasv_max_port=31000 # FTP 控制端口(监听端口),改为 30001 而非默认的 21,甲方指定 listen_port=30001
继续后续工作:
1 2 3 4 5 6 7 8 9 10 11 12 sudo useradd -d /data/meeting-files/ -s /sbin/nologin ftpusersudo passwd ftpusersudo apt install ftp -ysudo ss -tlnp | grep 30001sudo passwd ftpusersudo chown -R ftpuser:ftpuser /data/meeting-files/
内外安装 参考:https://blog.csdn.net/Wang_Pink/article/details/134977752 资源网址:http://rpmfind.net/linux/rpm2html
脚本 执行脚本 1 2 3 4 5 6 # 切换到脚本目录 cd /opt/meeting-file-sync # 脚本执行环境+命令 ./venv/bin/python sync_meeting_file.py full # 也可以后台运行脚本, nohup ./venv/bin/python sync_meeting_file.py full > sync.log 2>&1 &
nohup:全称 No Hang UP,不挂断
> sync.log:重定向标准输出
2>&1:重定向错误输出
2:代表标准错误输出(stderr)的文件描述符编号(Linux 中:0=标准输入,1=标准输出,2=标准错误)。
>&:将左边的文件描述符(2)复制/重定向到右边的目标(1)。
1:代表标准输出(stdout)。
&:最后的&,表示放在后台执行
设置tomcat 开机自启 1 2 3 4 5 crontab -e # 在其中添加 下面这行代码(startup.sh 自行更好,只有一行时 & 不要) 保存 reboot sudo -u root /home/debian/tomcat9/bin/startup.sh start & # 版本为 Kylin Linux ,用下行代码 @reboot /home/windit_data/dataTransfer/apache-tomcat-8.5.100/bin/startup.sh start
调试tomcat 取到tomcat bin 目录下,调用下面这个命令,可以前台运行
启动脚本 1 nohup java -jar /path/XXX.jar &
设置 jar 开机自启 编写脚本文件start.sh
1 2 3 4 5 6 7 8 # !/bin/bash nohup java -server -jar XXX.jar > /dev/null 2>&1 & # nohup 确保即使用户退出登录,Java进程也会继续运行。# java -server -jar XXX.jar 启动指定的JAR文件。 # -server 是一个JVM选项,表示以服务器模式运行JVM。服务器模式下的JVM通常会进行更多的优化,适合长时间运行的应用程序。 # > /dev/null 将标准输出(控制台输出)丢弃。 # 2>&1 将标准错误(错误信息)也丢弃。 # & 将整个命令放在后台执行。
进入 rc.d目录
1 2 cd /etc/rc.d cat rc.local
执行命令:vim rc.local , 修改rc.local 。按【i】键进入编辑模式,在最后添加代码:
1 2 3 4 5 6 7 8 9 10 11 sleep 60 cd /myApp/test sh /myApp/test/startup.sh # 第一句为进入你项目所在的目录,我这里把项目放在/myApp/test下 # 第二句执行该目录下的sh文件 # # 如果不提前进入所在目录,直接执行第二句,也会开机自启动,但是日志文件会在根目录下的log 文件中。只有先进入,再执行,项目的日志文件才会在test 文件夹下 #
设置权限:
1 2 chmod +x /etc/rc.d/rc.local chmod +x /myApp/test/startup.sh
定时任务 cron安装 1 2 3 4 5 # ubuntu sudo apt update # 更新软件包列表[reference:0][reference:1] sudo apt install cron -y # 安装 cron 服务[reference:2][reference:3] sudo systemctl start cron # 启动服务[reference:10] sudo systemctl enable cron # 设置开机自启[reference:11]
脚本设置 1 2 3 4 5 6 crontab -e # 凌晨四点 0 4 * * * cd /opt/meeting-file-sync && ./venv/bin/python sync_meeting_file.py incremental # 检测是否生效,确认输出中显示 0 4 * * * ... 即为正确 crontab -l
env:环境,比如python环境
java linux 启动和关闭脚本 启动: sh server.sh start 关闭: sh server.sh stop server.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 # !/usr/bin/env sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License" ); you may not use this file except in compliance# with the License. You may obtain a copy of the License at # # # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. APP_HOME=$(cd $(dirname $0)/../;pwd) # shell脚本必须指定,因为脚本不会自动加载环境变量,不写的话导致出现此错误 app=$APP_HOME'/app.jar' #jar包的决定路径 args='-server -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:SurvivorRatio=2 -XX:+UseParallelGC' #java程序启动参数,可不写 args1='--spring.config.location='$APP_HOME'/config/application.properties --logging.config='$APP_HOME'/config/logback-spring.xml --db.file='$APP_HOME'/config/config.db --logging.file.path='$APP_HOME'/logs/' LOGS_FILE=/dev/null # 把打印的日志扔进垃圾桶 cmd=$1 #获取执行脚本的时候带的参数 pid=`ps -ef|grep java|grep $app|awk '{print $2}'` # 抓取对应的java进程 startup(){ aa=`nohup java -jar $args $app $args1 >> $LOGS_FILE 2>&1 &` echo "nohup java -jar $args $app $args1 >> $LOGS_FILE 2>&1 &" } if [ ! $cmd ]; then echo "Please specify args 'start|restart|stop'" exit fi if [ $cmd = 'start' ]; then if [ ! $pid ]; then startup else echo "$app is running! pid=$pid" fi fi if [ $cmd = 'restart' ]; then if [ $pid ] then echo "$pid will be killed after 3 seconds!" sleep 3 kill -9 $pid fi startup fi if [ $cmd = 'stop' ]; then if [ $pid ]; then echo "$pid will be killed after 3 seconds!" sleep 3 kill -9 $pid fi echo "$app is stopped" fi