Linux问题汇总

2023-09-27 23:56:08 浏览数 (1)

bad interpreter: No such file or directory

在Windows环境下用Notepad 写了个shell脚本,上传到Linux平台后运行报错如下:

1

/bin/sh^M: bad interpreter: No such file or directory

经过查阅资料才知道,这是文件格式导致的问题:使用vi/vim进入该shell文件,按下:进入末行模式,输入set ff查询文件格式,结果如下:

1

fileformat=dos

不同的操作系统使用了不同的符号来换行,可以简单参考下下面的表格:

系统

换行符

DOS

CR/LF

UNIX

LF

MAC

CR

如果通过Windows下的Git将文件提交到Linux上的服务器,也会收到换行符将被替换的消息通知。而解决方法也很简单,切换文件格式即可,如下:

通过vi/vim进入想要修改的文件,按下:进入末行模式,输入set fileformat=unix,接着按下ZZ或者按下shift z z或者输入:x或者:wq保存修改即可。

判断网络是否连通

ssh命令

有个通用命令,Windows和Linux都能使用,如下:

1

ssh ip -v -p port

-v表示调试模式,会打印出具体日志。-p表示端口号。如果网络连通则会打印出来连接已建立Connection established。如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

C:Users10191>ssh localhost -v -p 1313 OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2 debug1: Connecting to localhost [::1] port 1313. debug1: connect to address ::1 port 1313: Connection refused debug1: Connecting to localhost [127.0.0.1] port 1313. debug1: Connection established. debug1: identity file C:\Users\10191/.ssh/id_rsa type 0 debug1: identity file C:\Users\10191/.ssh/id_rsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_dsa type -1 debug1: identity file C:\Users\10191/.ssh/id_dsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_ecdsa type -1 debug1: identity file C:\Users\10191/.ssh/id_ecdsa-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_ed25519 type -1 debug1: identity file C:\Users\10191/.ssh/id_ed25519-cert type -1 debug1: identity file C:\Users\10191/.ssh/id_xmss type -1 debug1: identity file C:\Users\10191/.ssh/id_xmss-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1 debug1: kex_exchange_identification: banner line 0: HTTP/1.1 400 Bad Request debug1: kex_exchange_identification: banner line 1: Content-Type: text/plain; charset=utf-8 debug1: kex_exchange_identification: banner line 2: Connection: close debug1: kex_exchange_identification: banner line 3: kex_exchange_identification: Connection closed by remote host

nc命令

如果服务器里无法使用ssh命令,可以使用下面的命令:

1

nc -vz -w 2 ip port

-v表示可视化,-z扫描时不发送数据,-w后面跟的数字表示超时几秒。用法如下:

1 2 3 4 5 6 7

// 端口能通 C:Users10191>nc -vz -w 2 1.2.3.70 8888 1.2.3.70 (1.2.3.70:8888) open // 端口不能通 C:Users10191>nc -vz -w 2 1.2.3.70 8889 nc: 1.2.3.70 (1.2.3.70:8889): Operation timed out

查看端口是否启用

lsof命令

该命令用于列出系统已经打开的所有文件,在Linux中任何事物都以文件形式存在,通过文件可以访问常规数据、网络连接和硬件等。但该命令需要访问核心内存和各种文件,因此需要root用户执行。

1 2 3 4

lsof -i:port // 查39007端口是否启用 lsof -i:39007

netstat命令

| 1 2 3 4 | netstat -aptn // 查39007端口是否启用 netstat -aptn | grep 39007 |

| ---------- | ------------------------------------------------------------ | | | |

查看和修改Linux的时区

查看当前时区

1

date -R

修改设置Linux服务器时区

1 2 3 4 5 6 7 8

// Linux通用 tzselect // 仅限于RedHat Linux 和 CentOS timeconfig // 适用于Debian dpkg-reconfigure tzdata

复制相应的时区文件,替换系统时区文件;或者创建链接文件

1 2 3 4

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime // demo:设置中国时区使用亚洲/上海( 8) cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

查看和修改Linux的时间

查看时间和日期

1

date

设置时间和日期

1 2 3 4 5

// 将系统日期设定成2009年11月3日的命令 date -s 11/03/2009 // 将系统时间设定成下午5点55分55秒的命令 date -s 17:55:55

将当前时间和日期写入BIOS,避免重启后失效

1

hwclock -w

附注

1 2 3 4 5

// 不加参数可以直接看到当前日期时间 date // 不加参数可以直接看到本月月历 cal

vi/vim打开文件提示Found a swap file by the name

swap文件来源

在使用vi或vim命令打开一个文件后,就会产生一个.(filename).swp的文件。如果编辑完成之后,正常退出,那么这个swp文件就会被自动删除。但是如果在操作该文件时发生了异常中断(非正常退出),就会在当前目录下生成了一个对应的swp文件。

在Linux中,以.开头的文件都是隐藏文件,可以通过使用ll -a或者ls -a来查看。

而这种swp文件是隐藏文件,有两个作用:

  • 避免用多个程序编辑同一个文件时,产生两个不同的版本。
  • 非常规退出时,文件恢复。

删除swp文件

只要将swp文件删除,就不会再出现这个提示。可以通过rm命令来删除该文件。

禁止生成swp文件

如果想要禁止生成swp文件,可以通过修改vim的配置文件来实现。新建一个~/.vimrc文件,在文件中添加一行代码:

1

set noswapfile

这样该配置就只会对当前用户生效,你也可以直接修改/etc/vimrc文件,效果是一样的。

通过swp文件来恢复文件

swp文件可以用来恢复文件,假如你有一个swp文件.my.ini.swp,可以通过以下命令来恢复:

1

vi -r my.ini

恢复文件之后可以把swp文件删除,不然每次打开my.ini文件时都会提示。

Linux命令英文全称

参考链接

  • bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法
  • DOS、Mac 和 Unix 文件格式 UltraEdit使用
  • DOS文件转换成UNIX文件格式详解
  • Linux系统查看当前时间的命令
  • linux下vi操作Found a swap file by the name
  • 非正常关闭vi编辑器时会生成一个.swp文件
  • Linux怎么查看端口是否启用

0 人点赞