root 2439850 1 0 Oct16 ? 00:01:0...
Created on: October 17, 2025
Created on: October 17, 2025
root 2439850 1 0 Oct16 ? 00:01:01 /export/jcloud-ufs/bin/audit-log-server -conf /export/jcloud-ufs/cfg/audit_log_server.cfg
如何停止 这个任务?
你列出来的是一条 Linux 进程信息,像这样:
root 2439850 1 0 Oct16 ? 00:01:01 /export/jcloud-ufs/bin/audit-log-server -conf /export/jcloud-ufs/cfg/audit_log_server.cfg
要停止这个任务(也就是杀掉这个进程),可以按以下步骤来做👇
在这行信息中,第 2 列就是进程号(PID):
2439850
kill
停止进程正常结束(优雅退出)
bashsudo kill 2439850
强制杀掉(如果上面命令无效)
bashsudo kill -9 2439850
👉 -9
是发送 SIGKILL
信号,进程会被立刻终止,但不会执行清理工作。
bashps -ef | grep audit-log-server
或:
bashps -p 2439850
如果没有输出,说明进程已经停止 ✅
如果这个进程是由 系统服务(例如 systemd)或 守护进程 启动的,它可能会自动重启。
👉 用 systemctl list-units | grep audit-log
检查是否是 systemd 管理的。
👉 如果是,可以用:
bashsudo systemctl stop audit-log-server.service sudo systemctl disable audit-log-server.service
来停止并禁用。
如果是通过 cron
或其他守护进程启动的,也需要一并关闭对应的启动项。
是否希望我一步步教你如何查看它是不是 systemd 管理的?(例如执行 systemctl list-units | grep audit
)
select * from filesystem where fs_name=fs-ykh7smklie;
这个sql 对吗
你的这条 SQL 语句:
sqlselect * from filesystem where fs_name=fs-ykh7smklie;
语法上 不完全正确。问题出在 fs-ykh7smklie
这一部分。
在 SQL 中,字符串常量需要加引号。否则数据库会把它当作字段名或表达式解析。
sqlSELECT * FROM filesystem WHERE fs_name = 'fs-ykh7smklie';
SELECT *
会返回表中所有字段;filesystem
是表名;fs_name
是字段名;'fs-ykh7smklie'
是字符串常量;;
可加可不加(多数 SQL 客户端在单条语句中可以省略)。如果 fs_name
是区分大小写的(比如在某些 PostgreSQL 或 Hive 环境下),确保字段名大小写与表结构一致;
如果 fs_name
是数字字段,那就不要加引号。
是否方便告诉我你是在用哪种数据库?(比如 MySQL、PostgreSQL、Oracle、Hive 等),我可以给你写出对应的更规范版本。
如何把 检索出来的 某个字段输出呢?
非常好 👍 你想要从 SQL 查询结果中只输出(显示)某个字段,而不是所有字段,可以这样做:
sqlSELECT 字段名 FROM 表名 WHERE 条件;
假设你刚才的表是 filesystem
,并且你只想输出字段 fs_path
,可以这样写:
sqlSELECT fs_path FROM filesystem WHERE fs_name = 'fs-ykh7smklie';
用逗号分隔:
sqlSELECT fs_name, fs_path, fs_size FROM filesystem WHERE fs_type = 'ufs';
加上 LIMIT 1
:
sqlSELECT fs_path FROM filesystem WHERE fs_name = 'fs-ykh7smklie' LIMIT 1;
如果你只想打印结果到文件(例如在命令行中),可以:
MySQL
bashmysql -e "SELECT fs_path FROM filesystem WHERE fs_name='fs-ykh7smklie';" > output.txt
PostgreSQL
bashpsql -c "SELECT fs_path FROM filesystem WHERE fs_name='fs-ykh7smklie';" > output.txt
你能告诉我你是在用哪种数据库(例如 MySQL、PostgreSQL、Oracle、SQLite、Hive)吗?我可以给你最合适的“输出字段到文件”命令。
sh /export/yhdfs/daily_check/yhdfs/script/audit_log_test.sh stat -audit_log_test_hadoop_home /export/jcloud-hadoop/hadoop-2.6.1-audit-log >> /export/yhdfs/daily_check/yhdfs/script/yhdfs_audit_log_stat.out
能否先sh到 10.0.0.12 再ssh 到 10.0.0.13 再执行sh脚本,最后 再把输出 打到out文件里面
可以做到 ✅,只需要用 多层 SSH 调用 把命令“转发”执行,并把输出重定向回本地(或者某个节点)。下面给你几种实现方式:
你可以在 10.0.0.12
上运行下面命令:
bashssh 10.0.0.12 "ssh 10.0.0.13 'sh /export/yhdfs/daily_check/yhdfs/script/audit_log_test.sh stat -audit_log_test_hadoop_home /export/jcloud-hadoop/hadoop-2.6.1-audit-log' " >> /export/yhdfs/daily_check/yhdfs/script/yhdfs_audit_log_stat.out
ssh 10.0.0.12
:登录到 10.0.0.12。ssh 10.0.0.13 '...'
:从 10.0.0.12 再登录 10.0.0.13。'...'
内执行你的脚本。>> ...out
:最终把输出重定向(追加)到本地的 out
文件。⚠️ 注意:这样写时,最终
out
文件会保存在 执行命令的机器上(比如你当前主机),而不是远程节点。
可以这样写:
bashssh 10.0.0.12 "ssh 10.0.0.13 'sh /export/yhdfs/daily_check/yhdfs/script/audit_log_test.sh stat -audit_log_test_hadoop_home /export/jcloud-hadoop/hadoop-2.6.1-audit-log' >> /export/yhdfs/daily_check/yhdfs/script/yhdfs_audit_log_stat.out"
📍区别:
>>
放在内层 '...'
外面,就会在 10.0.0.12 上生成输出文件。
可测试:
bashssh 10.0.0.12 ssh 10.0.0.13
bashssh 10.0.0.12 << 'EOF' ssh 10.0.0.13 'sh /export/yhdfs/daily_check/yhdfs/script/audit_log_test.sh stat -audit_log_test_hadoop_home /export/jcloud-hadoop/hadoop-2.6.1-audit-log' >> /export/yhdfs/daily_check/yhdfs/script/yhdfs_audit_log_stat.out EOF
这方式更可读,也方便扩展多条命令。
是否希望我帮你改成一个可以直接放进 crontab(定时执行)的版本?
root 3321945 3305304 0 17:01 pts/1 00:00:00 sh ./audit_log_test.sh test -global_api_service 10.0.0.17:6600 -audit_log_http_urls 10.0.0.13:20002 -audit_log_tcp_urls 10.0.0.13:20001 -audit_log_server_ips 10.0.0.13 -audit_log_server_log_path /export/jcloud-ufs/log/audit_log_server/audit.log /export/jcloud-ufs/log/audit_log_server/audit.1.log -test_fs_name fs-ykh7smklie -test_fs_id 2 -audit_log_test_hadoop_home /export/jcloud-hadoop/hadoop-2.7.3-hch
怎么把这个进程删了
你要“删掉”这个进程,也就是停止 / 杀掉它。
看你给出的这一行:
root 3321945 3305304 0 17:01 pts/1 00:00:00 sh ./audit_log_test.sh ...
第二列 3321945
是 PID(进程号)。
bashps -fp 3321945
确认它确实是你要结束的脚本。
优雅停止(推荐先试)
bashsudo kill 3321945
如果不响应(强制杀掉)
bashsudo kill -9 3321945
bashps -ef | grep audit_log_test.sh
如果没输出,说明已经被杀掉。
如果这个脚本由其他守护进程或定时任务(如 cron
)自动启动,它可能会被重新拉起。
→ 可用以下命令查看:
bashcrontab -l | grep audit_log_test
或:
bashsystemctl list-units | grep audit_log
如果需要彻底阻止它重启,找到启动它的来源(比如 crontab、systemd、supervisord)并移除或禁用对应配置。
要不要我帮你写一条命令,一次性“查找并杀掉所有 audit_log_test.sh 相关进程”?
drwxr-x--- 15 root root 4096 Oct 17 16:22 hadoop-2.7.3-hch
drwxr-x--- 15 root root 4096 Apr 9 2025 hadoop-2.7.3-ljd
drwxr-xr-x 8 root root 4096 Nov 12 2024 jdk1.8.0_381
13节点上 把 jdk 和 hadoop 打包一些,然后 传到 12节点上去。 应该 12 能免密 13 13应该去不了12
可以的。因为 12 能免密到 13(但 13 不能到 12),最稳妥的做法是:在 12 发起远程打包,把包生成在 13 的 /tmp,然后再从 12 侧拉取。下面给你一套可直接粘贴的命令。
假设这些目录都在 13 的
/export/jcloud-hadoop/
下(从你给的ls
看是这样):
hadoop-2.7.3-hch
、hadoop-2.7.3-ljd
、jdk1.8.0_381
在 10.0.0.12 上执行:
bashssh 10.0.0.13 'cd /export/jcloud-hadoop && \ tar -czf /tmp/jdk_hadoop_$(date +%F).tgz hadoop-2.7.3-hch hadoop-2.7.3-ljd jdk1.8.0_381 && \ sha256sum /tmp/jdk_hadoop_$(date +%F).tgz'
/tmp
下生成:/tmp/jdk_hadoop_YYYY-MM-DD.tgz
如果你只想分别打包:
bashssh 10.0.0.13 'cd /export/jcloud-hadoop && \ tar -czf /tmp/hadoop-2.7.3-hch_$(date +%F).tgz hadoop-2.7.3-hch && \ tar -czf /tmp/hadoop-2.7.3-ljd_$(date +%F).tgz hadoop-2.7.3-ljd && \ tar -czf /tmp/jdk1.8.0_381_$(date +%F).tgz jdk1.8.0_381 && \ sha256sum /tmp/*_$(date +%F).tgz'
仍然在 10.0.0.12 上执行(把 /data/pkg
换成你的目标目录):
或如果分包:
bashscp [email protected]:/tmp/{hadoop-2.7.3-hch_$(date +%F).tgz,hadoop-2.7.3-ljd_$(date +%F).tgz,jdk1.8.0_381_$(date +%F).tgz} /data/pkg/
bashcd /data/pkg sha256sum jdk_hadoop_$(date +%F).tgz # 对照第一步打印的校验值 tar -xzf jdk_hadoop_$(date +%F).tgz -C /export/jcloud-hadoop
分包则分别解压:
bashtar -xzf hadoop-2.7.3-hch_$(date +%F).tgz -C /export/jcloud-hadoop tar -xzf hadoop-2.7.3-ljd_$(date +%F).tgz -C /export/jcloud-hadoop tar -xzf jdk1.8.0_381_$(date +%F).tgz -C /export/jcloud-hadoop
/tmp
有足够磁盘空间存放压缩包,或把输出路径换到有空间的目录(比如 /export/tmp
)。--same-owner
(root 执行才有效)。bashtar --exclude='*/logs/*' -czf /tmp/jdk_hadoop_$(date +%F).tgz ...
(这种是“直接目录同步”,不打包;适合网络不太稳时断点续传)bashrsync -avz --progress [email protected]:/export/jcloud-hadoop/{hadoop-2.7.3-hch,hadoop-2.7.3-ljd,jdk1.8.0_381} /export/jcloud-hadoop/
需要我把上面的命令封装成一个可复用的脚本,或者替你加上排除规则吗?
main_routine_test.sh cron每天 9.15分执行,然后 把日志输出到当前log 里面/export/yhdfs/daily_check/routine_test/log 里面的一个日志文件里面
可以,给你一条可直接放进 crontab 的配置:每天 09:15 执行 main_routine_test.sh
,并把日志追加到
/export/yhdfs/daily_check/routine_test/log/
目录下按日期归档的日志文件里。
先假设脚本在:
/export/yhdfs/daily_check/routine_test/main_routine_test.sh
bashchmod +x /export/yhdfs/daily_check/routine_test/main_routine_test.sh
bashcrontab -e
cronMAILTO="" SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 15 9 * * * /usr/bin/flock -n /tmp/main_routine_test.lock /bin/bash -lc 'mkdir -p /export/yhdfs/daily_check/routine_test/log && /export/yhdfs/daily_check/routine_test/main_routine_test.sh >> /export/yhdfs/daily_check/routine_test/log/$(date +\%F).log 2>&1'
说明:
15 9 * * *
:每天 09:15 触发。flock -n
:防止上一次还没跑完就“重叠运行”。mkdir -p .../log
:确保日志目录存在。>> .../$(date +\%F).log
:按日期写入日志(如 2025-10-17.log
)。在 crontab 里 %
需要转义,所以写成 \%F
。2>&1
:把错误也一起写入日志。PATH
:给 cron 一个常用 PATH,避免找不到命令。/etc/crontab
),那一行需要加上用户,比如:
cron15 9 * * * root /usr/bin/flock -n /tmp/main_routine_test.lock /bin/bash -lc 'mkdir -p /export/yhdfs/daily_check/routine_test/log && /export/yhdfs/daily_check/routine_test/main_routine_test.sh >> /export/yhdfs/daily_check/routine_test/log/$(date +\%F).log 2>&1'
logrotate
,每天轮转并保留 7 天:
text/export/yhdfs/daily_check/routine_test/log/*.log { daily rotate 7 compress missingok notifempty dateext }
bashecho "==== $(date '+%F %T') on $(hostname) ===="
要不要我把这几步封装成一个一键安装的小脚本?