创建硬链接:Invalid cross-device link错误

http://www.cppblog.com/mingjiagu/archive/2011/12/01/161271.html

test243:~ # ln -d /usr/local/named/etc/named.conf /etc/named.conf
ln: creating hard link ’ /etc/… /etc/named.conf’ :Invalid cross-device link
原因:
硬链接限制:1.不能跨文件系统。2,不能连接目录。只能在同一个分区建立数据关联
此处因为2个文件在不同的目录所有不能建立硬链接。

以下是网络收集的一些资料:
硬链接和软连接的比较
1)在同一文件系统下,可以创建软链接或硬链接(同文件系统不同目录下也可以);
2)硬链接的文件显示大小跟原文件一样;软链接的文件很小,只有几十个字节;
3)硬链接的文件的inode跟原文件一样;软连接的文件有自己的inode,跟原文件不一样;
4)创建软链接或硬链接文件不会明显占用文件系统磁盘空间;

我们测试一下跨文件系统(/home --> /var ),是否可以建立软链接和硬链接:
软链接成功:
[root@s14 var]# ln -s /home/zjw/Wins2003.tar.gz /var/wins2003.symboliclink
硬链接失败:
[root@s14 var]# ln -b /home/zjw/Wins2003.tar.gz /var/wins2003.hardlink
ln: creating hard link /var/wins2003.hardlink' to/home/zjw/Wins2003.tar.gz’: Invalid cross-device link

上述实验说明:
1)软链接可以跨文件系统建立; 硬链接则不可以;

硬链接(hard link)
UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系 统只存在一个文件的副本,系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的 inode号,文件的目录登记项就是所谓的文件硬链接(硬链接,目录登记项: 文件名–>文件的inode;文件名可以有多个,但文件inode只是一个)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能跨越文件系统,也不能对目录建立硬链接!
硬 连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这 个文件的计数值 是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的 文件本身就算是一个硬连接)只有计数值变 成0也就是没有任何硬连接指向的时候才会真实的删除内容。

软链接(symbolic link)
我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分–>目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其 链接。

(yolo8n) wuzijian@orangepiaipro-20t:~/ultralytics-main/weights$ atc --framework=5 --model=yolov8n.onnx --input_format=NCHW --output=yolov8n_huawei --input_shape="images:1,3,1280,1280" --soc_version=Ascend310B1 atc: invalid option -- '-' atc: invalid option -- '-' atc: invalid option -- 'm' atc: invalid option -- 'o' atc: invalid option -- 'd' atc: invalid option -- 'e' atc: invalid option -- '=' atc: invalid option -- 'y' atc: invalid option -- 'o' atc: invalid option -- 'o' atc: invalid option -- 'v' atc: invalid option -- '8' atc: invalid option -- 'n' atc: invalid option -- '.' atc: invalid option -- 'o' atc: invalid option -- 'n' atc: invalid option -- 'n' atc: invalid option -- 'x' atc: invalid option -- '-' atc: invalid option -- 'i' atc: invalid option -- 'n' atc: invalid option -- '_' atc: invalid option -- '-' atc: invalid option -- 'o' atc: invalid option -- '=' atc: invalid option -- 'y' atc: invalid option -- 'o' atc: invalid option -- 'o' atc: invalid option -- 'v' atc: invalid option -- '8' atc: invalid option -- 'n' atc: invalid option -- '_' atc: invalid option -- 'h' atc: invalid option -- 'a' atc: invalid option -- 'w' atc: invalid option -- 'e' atc: invalid option -- 'i' atc: invalid option -- '-' atc: invalid option -- 'i' atc: invalid option -- 'n' atc: invalid option -- '_' atc: invalid option -- 'h' atc: invalid option -- 'a' atc: invalid option -- 'e' atc: invalid option -- '=' atc: invalid option -- 'i' atc: invalid option -- 'm' atc: invalid option -- 'a' atc: invalid option -- '-' atc: invalid option -- 'o' atc: invalid option -- 'c' atc: invalid option -- '_' atc: invalid option -- 'v' atc: invalid option -- 'e' Usage: atc -[u?lstp] [-[gf] game_name] [-r random seed] #: name host game time real time planes safe ------------------------------------------------------------------------------- 1: wuzijian orangepiaipro-20t default 6 :25 0 available games: default easy crossover K
最新发布
03-10
### 解决ATC命令行工具转换YOLOv8n模型时遇到的无效选项问题 当尝试使用`atc`命令行工具将YOLOv8n ONNX模型转换为Ascend310B1平台支持的OM格式时,如果遇到多个`invalid option`错误,这通常意味着使用的命令参数不被识别或者存在拼写错误。为了确保成功转换,建议遵循以下指导原则: #### 正确配置环境并验证输入模型 确保已经按照官方文档完成了CANN环境的安装,并且可以正常运行ATC工具[^4]。 #### 使用正确的命令语法 根据提供的信息,在执行转换操作之前应当仔细核对所使用的命令及其参数是否符合要求。对于YOLOv8n这样的特定网络结构来说,可能需要注意一些特殊的设置项。下面是一个推荐的基础命令模板用于ONNX至OM的转换过程: ```bash bash common/util/atc.sh --model=<path_to_yolov8n.onnx> \ --framework=5 \ # 表明这是来自PyTorch/ONNX的模型 --output=<output_path_without_extension> \ --soc_version=Ascend310P1 \ --input_format=NCHW \ --input_fp16_nodes="data" \ --enable_small_channel=1 \ --insert_op_conf=<optional_config_file> ``` 请注意上述命令中的几个关键点: - `--model`: 指定待转换的`.onnx`文件路径。 - `--framework`: 设置为`5`表示这是一个来源于ONNX框架的模型。 - `--output`: 输出目录加上期望的名字(不需要扩展名),例如`./outputs/yolov8n`. - `--soc_version`: 应该匹配目标硬件的具体型号;这里假设是Ascend310P1而不是题目提到的Ascend310B1,请依据实际情况调整。 - `--input_format`, `--input_fp16_nodes`, 和其他类似的选项应该基于具体的应用场景来决定,有时这些不是必需的。 考虑到不同版本之间的差异可能导致兼容性问题,导出ONNX模型时应特别关注opset版本的选择。过高或过低都可能导致后续处理出现问题。文中提及到`export`函数里的`opset=11`可能是较为合适的起点[^3]。 此外,关于Ultralytics YOLO系列模型的表现,确实有报告指出直接从其官方渠道获取的预训练权重在某些情况下表现不佳。因此,除了检查ATC命令外,也值得重新审视原始ONNX模型的质量和适用性[^2]。 最后提醒一点,由于软件更新频繁,最好查阅最新的官方指南和技术论坛帖子以获得最准确的帮助和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值