Intro

这里是我随手写写的地方,万一之后哪天这里的一条命令就用上了呢.

1. 杀进程

1.1 进程名

现已知一进程突然无限增长,将load average拖至300+。

ps aux|grep <Process name>|awk '{print $2}'|xargs kill -9
  • 使用 ps aux 显示所有用户的进程
  • 使用 grep $ProcessName 找到含有\$ProcessName的所有进程
  • 使用 awk '{print $2}' 输出该进程的进程号
  • 使用 xargs kill -9 执行9号信号,Kill signal(杀死进程信号,linux规定进程不可以忽略这个信号)

1.2 僵尸进程

在 Linux 系统中,正常情况下,子进程死亡后其父进程会接收到通知进行一些例如释放内存之类的清理操作。但是,如果父进程未收到通知察觉子进程死亡,那么子进程就进入了“僵死”状态。

ps -A -ostat,pid,ppid|grep -e '[zZ]'|awk '{print $2}'|xargs kill -9
  • 使用 ps -A -ostat,pid,ppid|grep -e '[zZ]' 输出僵尸进程的 PID 及其父进程的 PID
  • 使用 awk '{print $2}' 输出该进程的进程号
  • 使用 xargs kill -9 执行9号信号,Kill signal(杀死进程信号,linux规定进程不可以忽略这个信号)

相关:踢终端

按照终端号踢出用户

pkill -9 -t $terminalName

2. wsl挂载samba或主机移动设备报错

┌─[root@DSASH-ZYJ] - [/mnt] - [2022-09-19 09:30:42]
└─[1] ll
ls: cannot access 'e': Invalid argument
ls: cannot access 'smb254': Transport endpoint is not connected
ls: cannot access 'smb85': Transport endpoint is not connected
total 0
drwxrwxrwx 1 root root 4.0K Sep 15 14:48 c
drwxrwxrwx 1 root root 4.0K Sep 16 16:40 d
d????????? ? ?    ?       ?            ? e
drwxr-xr-x 1 root root 4.0K Aug 12 10:59 f
d????????? ? ?    ?       ?            ? smb254
d????????? ? ?    ?       ?            ? smb85

ls: cannot access ‘e’: Invalid argument
ls: cannot access ‘smb254’: Transport endpoint is not connected
ls: cannot access ‘smb85’: Transport endpoint is not connected
这通常是由于文件系统崩溃导致挂载目录未挂载。

umount -l /mnt

lazy umount正是针对上面错误中的busy而提出的,即可以卸载“busy”的文件系统。选项–l并不是马上umount,而是在该目录空闲后再umount。卸载完成后再重新挂载或mount -a恢复/etc/fstab即可。

3. 从Linux系统文件中检查服务器网线连接情况。

20220920使用clonezilla恢复flash station

cat /sys/class/net/eth0/carrier
  • 若返回为 1 则网线连接上了
  • 若返回为 0 则网线未连接
  • 也有可能输出 cat: /sys/class/net/eth9/carrier: Invalid argument 则开启网口后( ip link set eth9 up )再看

4. clonezilla 在恢复系统后找不到启动项,进入 grub

在安装完毕后可能会无法找到系统,进入grub启动项的问题

  1. 使用UFEI启动模式
  2. 找到UFEI启动项配置
  3. 添加硬盘中的EFI/opensuse/grubx86.efi为“opensuse”
  4. 把opensuse提升为启动项第一位

5. 导出postgresql表至 *.sql

数据库

5.1 已经有DSA自己写的save.db导出一整个dump,仍需要某个表导出内容。

pg_dump -h localhost -p 5432 -U prodis prodis -t prodat_vehicle --inserts >/data/mysql.sql
  • pg_dump 导出postgresql命令
  • -h , –host=主机名 数据库服务器的主机名或套接字目录
  • -p , –port=端口号 数据库服务器的端口号
  • -U , –username=用户名 以指定的数据库用户联接
  • 第二个 prodis 数据库名
  • -t , –table=TABLE 只转储指定名称的表
  • --inserts, 以INSERT命令,而不是COPY命令的形式转储数据

5.2 在没有DSA的save.db下导出dump

pg_dump -v -U prodis -f /data/tmp/lucas/all.sql
  • -v , –verbose, 详细模式
  • -f , –file=文件名 输出文件名

5.3 pg_dump 常用参数列表。

  1. 一般选项
参数作用
-f, –file=文件名输出文件名
-F, –format=c/t/p输出文件格式(定制,tar, 明文)
-v, –verbose详细模式
-Z, –compress=0-9被压缩格式的压缩级别
–lock-wait-timeout=TIMEOUT在等待表锁超时后操作失败
–help显示帮助信息,然后退出
–version输出版本信息,然后退出
  1. 控制输出内容选项
参数作用
-a, –data-only只转储数据,不包括模式
-s, –schema-only只转储模式,不包括数据
-t, –table=TABLE只转储指定名称的表
-T, –exclude-table=TABLE不转储指定名称的表
-b, –blobs在转储中包括大对象
-c, –clean在重新创建之前,先清除(删除)数据库对象
-C, –create在转储中包括命令,以便创建数据库
-E, –encoding=ENCODING转储以ENCODING形式编码的数据
-n, –schema=SCHEMA只转储指定名称的模式
-N,–exclude-schema=SCHEMA不转储已命名的模式
-o, –oids在转储中包括OID
-O, –no-owner在明文格式中,忽略恢复对象所属者
-S, –superuser=NAME在转储中, 指定的超级用户名
-x, –no-privileges不要转储权限 (grant/revoke)
–binary-upgrade只能由升级工具使用
–inserts以INSERT命令,而不是COPY命令的形式转储数据
–column-inserts以带有列名的INSERT命令形式转储数据
–disable-dollar-quoting取消美元 (符号)引号, 使用 SQL 标准引号
–disable-triggers在只恢复数据的过程中禁用触发器
–no-tablespaces不转储表空间分配信息
–role=ROLENAME在转储前运行SETROLE
  1. 联接选项
参数作用
-h, –host=主机名数据库服务器的主机名或套接字目录
-p, –port=端口号数据库服务器的端口号
-U, –username=用户名以指定的数据库用户联接
-w, –no-password永远不提示输入口令
-W, –password强制口令提示 (默认)

For further information, read pg_dump (runoob.com).

5.4 数据库导入 *.sql

psql -d prodis -U prodis -f /data/tmp/lucas/prodat_vehicle.sql

6. prodis 使用的端口

port

TCP:20,21,22,37,80,443,873,2000,2001,4000,5115,5116,5117,5120,9001,44835,44861,3289,9100,139,445,5432
UDP:123

7. 检测端口开启状态

7.1 检查UDP端口连接是否工作

nc -vuz {hostIP} {port}

7.2 检查TCP端口连接是否工作

telnet {hostIP} {port}

8. Configuration of the database connection of PRODIS.Control

/opt/dsa/prodiscontrol/tomcat/conf/Catalina/localhost/prodis.xml

If there are invalid XML characters (those are: <, >, “, ‘, &) in the password, they have to be escaped! E.g. “&” ¬ “&”

9. SLSE15 配置nameserver但无法ping通外网

修改/etc/sysconfig/network/routes
->

default 172.27.8.1  - -
systemectl restart network

10. grep

10.1 排除空行的命令

grep -v '^$' filename

10.2 排除以#注释的命令是:

grep -v '^#' filename

10.3 结合

既排除空行又排除注释行的命令(排除空行^$顺序在前面)

grep -Ev '^$|#' filename

11 Flashstation 中文

安装在线源
yast2 -> Language(Sprache) -> Simplified Chinese
Sysconfig Editor -> System -> Environment -> Language -> RC.* 改为zh_CN.UTF-8

12 udev reboot

udevadm control --reload-rules
udevadm trigger

13 按文件大小安排

du -sh * | sort -rn

14 删除mailq里的邮件

postsuper -d ALL

15 Planthub 迁移启动失败

进入单用户模式后执行下面命令,可以看到系统启动过程中红色标记的报错信息

journalctl -xe

Failed to mount /sysroot
执行

xfs_repair -v -L /dev/dm-0

16 Firewalld

firewall-cmd --permanent --add-port=9001/tcp --zone=work
firewall-cmd --permanent --add-port=8080/tcp --zone=work
firewall-cmd --permanent --add-service=samba --zone=work
firewall-cmd --permanent --add-service=rsyncd --zone=work
firewall-cmd --permanent --add-service=http --zone=work
firewall-cmd --reload

17 切机重启

主备切换后尽可能重启一下jsonres2xmld

systemctl restart jsonres2xml-act.service 

18 不重启下插硬盘

find /sys/class/*host/host*/scan | while read line; do echo - - - > $line; done

19 reset admin pass

UPDATE user_account SET password='0bb551e532c770c61020218ed8bc2007cae1f5ad' WHERE login='admin';
UPDATE user_profilesetting SET numvalue = 0 WHERE accountid = 1 AND variable = 'loginFail';
UPDATE user_account SET locked=0  WHERE accountid = 1;
UPDATE user_profilesetting SET datevalue = CURRENT_TIMESTAMP WHERE accountid = 1 AND variable = 'passwordChanged';

20 unanswered fazit request caused coms toggle

delete from fazit_telinstance where MQSRECVDATE is null
delete from fazit_tel where answertel is null and telno not in (select telno from fazit_telinstance)

Delete all unanswered fazit request

21 查询检测结果的两种方法

21.1 json

ls /data/tmp/lucas/0718_PDI/result/*.json | xargs -I {} jq -r 'select(.statResDoc.test.physicalLocation == "Trim") | input_filename' {}

21.2 xml

grep -rl "LGB320H86RW003053" /export/res2xml/exp1/* | while read file; do echo "--- File: $file ---"; awk 'FNR==20 {print $0}' "$file"; done