linux 软连接失败?linux软件卡了怎么办
这篇文章给大家聊聊关于linux 软连接失败,以及linux软件卡了怎么办对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
linux软连接出现红色 不管用
在 linux服务器上创建了一个软连接,这样使用一些命令的时候会方便一些。
这里服务器搭建的 node环境,使用 node-v16.13.0-linux-x64.tar.xz node压缩包。
步骤如下:
1.我们上传一个压缩包,并且解压
2.cd到bin目录下并且./node-v会有结果返回
3.这时我们软连接:ls-s./node/usr/bin/node
到根目录下去测试 node-v命令,返回'未找到命令',我们输入命令 cd/usr/bin并且 ls,发现 node是红色的。
查文档后:
Linux系统颜色默认表示的文件类型:
蓝色表示目录;
绿色表示可执行文件;
红色表示压缩文件;
浅蓝色表示链接文件;
灰色表示其它文件;
红色闪烁表示链接的文件有问题了;
黄色是设备文件,包括block, char, fifo。
最后解决方式是:软连接时写全被连接的地址
改成 ln-s/全路径/node/usr/bin/node问题解决!
Linux 系统中如何删除软连接
在Linux系统中,软链接,或符号链接,是一种特殊的文件形式,用于作为指向其他文件的快捷方式。通过ln命令,可以创建这些链接。
关于如何删除软链接,Linux系统本身并没有特定命令直接操作此功能。但我们可以使用rm命令,一个用于删除文件和目录的通用命令来实现。使用方法如下:
首先,明确软链接的名称,然后在rm命令后输入该名称。举例来说,如果我们想删除名为mylink的软链接,操作命令为:
rm mylink
运行此命令后,如果软链接所指向的文件或目录仍然存在,则将无法删除软链接。此时,可使用以下方法验证:
运行ls命令检查文件或目录状态,若mylink依然存在,表示软链接删除失败,可能原文件或目录不存在。
删除多个软链接时,同样可以使用rm命令,通过输入多个链接名称实现批量删除。
另外,也可以使用unlink命令进行软链接删除操作,但同样需注意,unlink命令虽然主要用于删除链接,但也可能删除文件。具体使用方法为:
同样以mylink为例,使用unlink命令删除其操作为:
unlink mylink
需要注意的是,unlink命令不能一次删除多个链接。
在Linux系统中,可以创建指向文件或目录的软链接。删除指向目录的软链接时,无需使用-r选项,操作与删除文件链接相似。但需注意,删除指向目录的软链接时,在目录名称后不要添加斜杠,否则会报错。
应尽量避免使用-f选项强制删除指向目录的软链接,因为这会导致目录内容被删除。正确操作应遵循上述规则。
硬链接与软链接不同,硬链接几乎与原始文件无法区分,仅通过inode number可以识别。删除硬链接与删除文件操作相同。
删除链接文件时,实际上很少有同时删除软链接和原始文件的需求。如果确实需要,可以通过找到原始文件并删除来实现此操作。同时,需注意,删除源文件但未删除软链接后,软链接将变为断开或悬空状态。
综上所述,推荐使用rm命令来删除软链接,因为这是最常用且熟悉的文件删除命令。当然,对于软链接的删除操作也适用于此命令。
推流tcp通道连接失败错误码-3
ECONNABORTED(WSAECONNABORTED)
该错误被描述为“software caused connection abort”,即“软件引起的连接中止”。原因在于当服务和客户进程在完成用于 TCP连接的“三次握手”后,客户 TCP却发送了一个 RST(复位)分节,在服务进程看来,就在该连接已由 TCP排队,等着服务进程调用 accept的时候 RST却到达了。POSIX规定此时的 errno值必须 ECONNABORTED。源自 Berkeley的实现完全在内核中处理中止的连接,服务进程将永远不知道该中止的发生。服务器进程一般可以忽略该错误,直接再次调用accept。
这个tcp send引起的,一般是protocol stack重传超时或者protocol处理错误等。
ECONNABORTED通常发生在重传(一定次数)失败后,强制关闭套接字;
1
2
3
1
2
3
ECONNRESET(WSAECONNRESET)
ECONNRESET错误发生在对方意外关闭套接字后。
对于TCP
远程主机已强制关闭,发送数据,远程主机protocol stack回应RST。
1
1
对于UDP
在Windows系统上,双方正在进udp数据交互,另一端关闭了,发送方会收到“ICMP Port
1
1
Unreached",protocol向上报WSAECONNRESET。这时应用层一般不做关闭动作(除非有特殊的需求),因为这仅仅另外一端的
UDP socket不存在了,本端的udp socket还是完全合法的。
有一点要注意的是,在Linux上,应用层不会得到ECONNRESET。
1
1
该错误被描述为“connection reset by peer”,即“对方复位连接”,这种情况一般发生在服务进程较客户进程提前终止。当服务进程终止时会向客户 TCP发送 FIN分节,客户 TCP回应 ACK,服务 TCP将转入 FIN_WAIT2状态。此时如果客户进程没有处理该 FIN(如阻塞在其它调用上而没有关闭 Socket时),则客户 TCP将处于 CLOSE_WAIT状态。当客户进程再次向 FIN_WAIT2状态的服务 TCP发送数据时,则服务 TCP将立刻响应 RST。一般来说,这种情况还可以会引发另外的应用程序异常,客户进程在发送完数据后,往往会等待从网络IO接收数据,很典型的如 read或 readline调用,此时由于执行时序的原因,如果该调用发生在 RST分节收到前执行的话,那么结果是客户进程会得到一个非预期的 EOF错误。此时一般会输出“server terminated prematurely”-“服务器过早终止”错误。
WOULDBOCK(WSAWOULDBLOCK)
对于nonblocking io,这个很常见了。发送数据的时候,socket sending
buffer没有空间了,得到这error code。简单做法是稍后重试,更好的做法是采用select/epoll之类的机制,注册一个WRITE
EVENT,当sending buffer有空间了,kernel通知应用程序。
ETIMEDOUT
错误被描述为“connect time out”,即“连接超时”,这种情况一般发生在服务器主机崩溃。此时客户 TCP将在一定时间内(依具体实现)持续重发数据分节,试图从服务 TCP获得一个 ACK分节。当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回 ETIMEDOUT错误。如果某个中间路由器判定该服务器主机已经不可达,则一般会响应“destination unreachable”-“目的地不可达”的ICMP消息,相应的客户进程返回的错误是 EHOSTUNREACH或ENETUNREACH。当服务器重新启动后,由于 TCP状态丢失,之前所有的连接信息也不存在了,此时对于客户端发来请求将回应 RST。如果客户进程对检测服务器主机是否崩溃很有必要,要求即使客户进程不主动发送数据也能检测出来,那么需要使用其它技术,如配置 SO_KEEPALIVE Socket选项,或实现某些心跳函数。
EPIPE
错误被描述为“broken pipe”,即“管道破裂”,这种情况一般发生在客户进程不理会(或未及时处理)Socket错误,继续向服务 TCP写入更多数据时,内核将向客户进程发送 SIGPIPE信号,该信号默认会使进程终止(此时该前台进程未进行 core dump)。结合上边的 ECONNRESET错误可知,向一个 FIN_WAIT2状态的服务 TCP(已 ACK响应 FIN分节)写入数据不成问题,但是写一个已接收了 RST的 Socket则是一个错误。