1.系统不能定位文件
2.Android获取硬件设备信息
3.Mysqldump参数大全
4.linux中的统源rm- rf可以删除文件吗?
5.linux中查看网卡流量六种方法
系统不能定位文件
系统不能定位文件(系统不能定位文件怎么办)问题现象
应用系统在创建文件失败,查看报错日志,统源错误信息为文件系统只读。统源
排查过程1、统源 检查磁盘空间是统源否占满;
通过 df -h 查看各分区使用情况。
分区磁盘使用率在% 以下,统源传祺汽车公司源码查询排除。统源
2、统源 确认是统源否应该主备切换导致的只读;
确认系统是否类keepalive 主备模式,排除因master节点异常,统源导致slave 节点切主但没有修改写权限成功。统源
经排查,统源该系统不存在主从,统源为多台服务器高可用。统源
3、统源 检查系统message 日志;
在发现问题时间点,对照message日志查看,发现报错如下
kernel: sd 2:0:1:0: [sdb] Unhandled sense code
kernel: sd 2:0:1:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
kernel: sd 2:0:1:0: [sdb] Sense Key : Medium Error [current]
kernel: sd 2:0:1:0: [sdb] Add. Sense: Unrecovered read error
kernel: sd 2:0:1:0: [sdb] CDB: Write(): 2a
kernel: Aborting journal on device sdb1-8.
kernel: EXT4-fs (sdb1): delayed 电脑block allocation failed for inode at logical offset 0 with
max blocks with error -
kernel: kernel: This should not happen!! Data will be lost
kernel: EXT4-fs error (device sdb1) in ext4_da_writepages: Journal has aborted
kernel: EXT4-fs error (device sdb1): ext4_journal_start_sb: Detected aborted journal
kernel: EXT4-fs (sdb1): Remounting filesystem read-only
kernel: EXT4-fs (sdb1): ext4_da_writepages: jbd2_start: pages, ino ; err -
EXT4-fs分区错误,导致系统将分区置为只读。
Linux 内核对EXT4的错误处理主要有三种:继续(不处理);内核panic(挂起);将错误分区设置为只读(继续)。
处理模式设置主要是在文件系统物理分区上或者通过mount 参数配置。前者可以通过tune2fs -l /dev/sdb1 查看Errors behavior;后者可以通过mount命令帮助文档了解设置。具体的0101101的源码情况可通过内核源码进确认。
可能原因可能由于磁盘掉电,文件系统错误,坏道,驱动,HBA卡、RAID卡故障,磁盘老旧长期大量的读写、文件系统文件被破坏、磁盘碎片文件、异常断电、读写中断等。
错误处理思路电脑1、通过fdisk -l 查看分区具体信息;
2、通过tune2fs -l /dev/sdb1 查看有无错误相关信息。
3、将该节点踢出应用集群,确认该分区的数据,备份该分区数据,避免修复中出现无法mount的情况。
4、尝试使用fsck修复磁盘。
# 1、github泄露源码确认出问题分区编号$ fdisk -l# 2、卸载分区$ unmount /dev/sdb1# 3、检查并修复分区$fsck /dev/sdb1## 注:fsck 可能会导致磁盘损坏或者数据丢失# 4、重新挂载$ mount -a ## fsck 退出码如下:# 0:没有错误# 1:修复了一些文件系统错误# 2:系统需要被重启# 4:文件系统错误未被修复# 8:操作错误# :使用或语法错误# :fsck 被用户取消# :共享库出错# fsck 常用参数:-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数-s : 依序一个一个地执行 fsck 的指令来检查-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查-C : 显示完整的检查进度-d : 打印出 e2fsck 的 debug 结果-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行-电脑 R : 同时有 -A 条件时,省略 / 不检查-V : 详细显示模式-a : 如果检查有错则自动修复-r : 如果检查有错则由使用者回答是否修复-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。
相关概念EXT4:第四代扩展文件系统(Fourth EXtended filesystem,EXT4)是Linux系统下的日志文件系统,是EXT3文件系统的后继版本;EXT4分别支持1EB(1EB=PB,1PB=TB)的文件系统,以及TB的单个文件;EXT4磁盘结构的inode个数支持亿,而且EXT4的单个文件大小支持到T(4K block size) 。EXT3类型文件系统支持最大TB文件系统和最大2TB文件;EXT3只支持,个子目录,而EXT4支持无限数量的子目录。xfs:XFS是一个位文件系统,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制,常用语位操作系统,发挥更好的ipfs社区 源码性能。SuperBlock:在硬盘分区中,还有一个超级区块 (SuperBlock) ,SuperBlock会记录整个文件系统的整体信息,包括 Inode、Block 总量、使用大小、剩余大小等信息,每个 inode 与 block 电脑都有编号对应,方便Linux系统快速定位查找文件。inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号。block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。电脑 电脑
Android获取硬件设备信息
获取Android硬件设备信息主要通过Build类和TelephonyManager类实现,同时可结合反射获取SystemProperties类的隐藏API和特定ROM独有的数据。以下是一些关键的获取项及其方法: 1. 序列号和IMEI: 使用getDeviceId方法获取设备序列号,通过getString方法和android_id属性获取IMEI。例如,序列号为"",IMEI为"bcbcfaa5b"。vue oa 源码 2. 手机号码: 使用getLine1Number方法获取手机号码,示例为""。 3. 手机卡序列号: 通过getSimSerialNumber方法获取手机卡序列号,例如"";IMSI(国际移动用户识别码)通过getSubscriberId方法获取,示例为""。 4. 手机卡国家信息: 使用getSimCountryIso方法获取手机卡所在国家的ISO代码,如"cn"。 5. 运营商信息: 包括运营商ID(getSimOperator)、运营商名字(getSimOperatorName)和运营商国家代码(getSimOperator)。 6. 手机类型和固件版本: 使用getPhoneType方法获取手机类型,getRadioVersion方法获取固件版本,示例为"MOLY.WR8.W.MD.TG.MP.V1.P, // :"。 7. 系统版本和硬件信息: 通过android.os.Build类获取系统版本字符串(如"4.4.4")、API级别(SDK)、品牌、型号、ID、DISPLAY信息、产品名、制造商、设备名、硬件名称、指纹(设备唯一标识)等。 8. 串口序列号和设备版本类型: 使用SERIAL获取串口序列号,TYPE获取设备版本类型,TAGS获取设备标签,HOST获取设备主机地址,USER获取设备用户名,codename获取系统开发代号,build_incremental获取系统源代码控制值。 9. 屏幕信息: 使用Display类获取屏幕密度(density)、屏幕密度(densityDpi)、内置分辨率(getWidth和getHeight)、x像素和y像素、字体缩放比例(scaledDensity)等。 . 蓝牙和WiFi信息: 使用WIFI相关方法获取蓝牙地址(getAddress)、无线路由器名(getSSID)、无线路由器地址(getBSSID)和内网ip(getIpAddress)等。 请注意,获取某些信息,如手机号码,可能需要额外的用户交互或权限,而非直接通过API实现。Mysqldump参数大全
Mysqldump参数大全
参数
参数说明
--all-databases , -A:备份所有数据库
--all-tablespaces , -Y:备份所有表空间
--no-tablespaces , -y:不备份表空间
--add-drop-database:添加DROP DATABASE语句
--add-drop-table:添加DROP TABLE语句
--add-locks:添加锁以防止并发
--allow-keywords:允许关键字作为列名
--apply-slave-statements:应用从属服务器的事务
--character-sets-dir:指定字符集目录
--comments:保留注释
--compatible:使用兼容的格式
--compact:紧凑输出,节省空间
--complete-insert, -c:完整插入,包含完整表结构
--compress, -C:压缩输出
--create-options, -a:创建表时的选项
--databases, -B:指定数据库
--debug:调试模式
--debug-check:检查并行备份
--debug-info:提供额外调试信息
--default-character-set:指定默认字符集
--delayed-insert:延迟插入
--delete-master-logs:删除主日志
--disable-keys:禁用主键
--dump-slave:备份从属服务器
--events, -E:备份事件
--extended-insert, -e:扩展插入
--fields-terminated-by:指定字段分隔符
--fields-enclosed-by:指定字段包围符
--fields-optionally-enclosed-by:可选字段包围符
--fields-escaped-by:指定字段转义符
--flush-logs:刷新日志
--flush-privileges:刷新权限
--force:强制执行
--help:显示帮助信息
--hex-blob:以十六进制格式备份二进制数据
--host, -h:指定服务器地址
--ignore-table:忽略表备份
--include-master-host-port:包含主服务器地址和端口
--insert-ignore:忽略重复的插入
--lines-terminated-by:指定行分隔符
--lock-all-tables, -x:锁定所有表
--lock-tables, -l:锁定表
--log-error:指定错误日志文件
--master-data:备份主数据
--max_allowed_packet:指定最大数据包大小
--net_buffer_length:指定网络缓冲区大小
--no-autocommit:不自动提交
--no-create-db, -n:不创建数据库
--no-create-info, -t:不创建表信息
--no-data, -d:不备份数据
--no-set-names, -N:不设置字符集
--opt:优化查询
--order-by-primary:按主键排序
--password, -p:指定密码
--pipe(windows系统可用):使用管道输出
--port, -P:指定端口号
--protocol:指定协议
--quick, -q:快速备份
--quote-names,-Q:引用列名
--replace:替换已有数据
--result-file, -r:指定结果文件
--routines, -R:备份存储过程和函数
--set-charset:设置字符集
--single-transaction:使用单个事务
--dump-date:备份日期
--skip-opt:跳过优化
--socket,-S:指定socket路径
--tab,-T:使用tab文件格式
--tables:指定表
--triggers:备份触发器
--tz-utc:使用UTC时间
--user, -u:指定用户名
--verbose, --v:详细模式
--version, -V:显示版本信息
--where, -w:指定WHERE条件
--xml, -X:输出XML格式
--plugin_dir:指定插件目录
--default_auth:指定默认认证方法
参数来源于mysql5.5.源码
linux中的rm- rf可以删除文件吗?
在linux下rm -rf是一个很可怕的命令,这个命令意味着一旦删除的文件是无法挽回的。但是在一定的条件下可以补救,但是有个大前提:就是不能有覆盖的动作(意思就是在尝试恢复删除的数据前,删除文件的目录内不能存放新东西),不然覆盖多少就损失多少。
这里用到的套件是ext3grep、系统必须默认的安装上e2fsprogs-lib、2fsprogs-devel、e2fsprogs5、gcc、gcc++这些软件。
1、[root@localhost ~]# rpm -qa|grep e2fsprogs
e2fsprogs-libs-1.-.el5
e2fsprogs-devel-1.-.el5
e2fsprogs-1.-.el5
源码安装ext3grep
2、 [root@localhost ~]# llext3grep-0..2.tar.gz
-rw-r--r-- 1 root root Oct ext3grep-0..2.tar.gz
[root@localhost~]# tar zxvf ext3grep-0..2.tar.gz
[root@localhost ~]# cd ext3grep-0..2
[root@localhost ext3grep-0..2]# ./configure
[root@localhost ext3grep-0..2]# make && make install
[root@localhost ~]# ll /usr/local/bin
total
-rwxr-xr-x 1 root root Oct : ext3grep //www.linuxidc.com这句是那个可执行文件。
接下来演示一个补救的过程实例
[root@localhost~]# mkdir /data/ /ixdba/
[root@localhostdata]# dd if=/dev/zero of=data-disk bs=1M count=
[root@localhost data]# mkfs.ext3 data-disk //格式为ext3的文件系统,在出现的提示符处输入y
[root@localhost data]# mount -o loop /data/data-disk /ixdba/ //挂载
[root@localhost data]# cp /etc/host* /ixdba/ //往里边放文件
[root@localhost data]# cp /etc/passwd /ixdba/
[root@localhost data]# cd /ixdba/
[root@localhost data]# rm -rf * //制造删除的动作
[root@localhost data]# cd /data/
[root@localhostdata]# ext3grep /data/data-disk --ls --inode 2 //查看丢失的文件
[root@localhostdata]# ext3grep /data/data-disk --restore-file passwd //仅仅恢复passwd这个文件
[root@localhost data]# ext3grep /data/data-disk --restore-all //恢复的动作,全部恢复。
[root@localhostdata]# ls
data-disk data-disk.ext3grep.stage1 data-disk.ext3grep.stage2 RESTORED_FILES
[root@localhost data]# ll RESTORED_FILES/ //所有恢复的文件全在这个文件夹里存放,都找回来了
total
-rw-r--r-- 1 root root Oct :host.conf
-rw-r--r-- 1 root root Oct :hosts
-rw-r--r-- 1 root root Oct :hosts.allow
-rw-r--r-- 1 root root Oct :hosts.deny
drwx------ 2 root root Oct : lost+found
-rw-r--r-- 1 root root Oct : passwd
总结:这里只能实现的是首次恢复的动作,并且不能有覆盖的动作。
注意:
1. ext3grep后面跟的是分区名称,不是目录名
2. --restore-file恢复指定文件,对路径名有特殊要求,具体请自己用—help查看
3. 所有恢复的文件放到该分区下的RESTORED_FILES目录,不是原目录
4. 关于所需的安装包,可以在系统光盘、SDK光盘上找。
linux中查看网卡流量六种方法
方法一、nload工具源码包路径:
查看参数帮助命令:
nload help
-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是.
-i:进入网卡的流量图的显示比例最大值设置,默认 kBit/s.
-m:不显示流量图,只显示统计数据。
-o:出去网卡的流量图的显示比例最大值设置,默认 kBit/s.
-t:显示数据的刷新时间间隔,单位是毫秒,默认。
-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!
Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。
如只监控eth0命令: nload eth0
方法二、iftop工具
源码包路径:
/%7Epdw/iftop/download/iftop-0..tar.gz
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的= =这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s s s 的平均流量
2、iftop相关参数
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F ..1.0/或# iftop -F ..1.0/...0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或秒或秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按根据左边的本机名或IP排序;
按根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用Shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
方法三、 ifstat
源码包路径:
mand
DESCRIPTION
watch runs command repeatedly, displaying its output (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds; use -n or --interval to specify a different interval.
The -d or --differences flag will highlight the differences between successive updates. The --cumulative option makes highlighting sticky, presenting a running display of all positions that have ever changed. The -t or --no-title option turns off the header showing the interval, command, and current time at the top of the display, as well as the following blank line. watch will run until interrupted.
NOTE
Note that command is given to sh -c which means that you may need to use extra quoting to get the desired effect.
Note that POSIX option processing is used (i.e., option processing stops at the first non-option argument). This means that flags after command don't get interpreted by watch itself.
EXAMPLES
To watch for mail, you might do: watch -n from
To watch the contents of a directory change, you could use: watch -d ls -l
If youre only interested in files owned by user joe, you might use: watch -d 'ls -l fgrep joe'
You can watch for your administrator to install the latest kernel with: watch uname -r (Just kidding.)呵呵
BUGS
Upon terminal resize, the screen will not be correctly repainted until the next scheduled update. All --differences highlighting is lost on that update as well.
Non-printing characters are stripped from program output. Use cat -v as part of the command pipeline if you want to see them.
方法六、
watch cat /proc/net/dev