linux系统相关2

2024-07-31 09:11:06 浏览数 (1)

linux运行批处理文件(bat)

bat是批处理文件,在windows和linux上都可以使用。

不过在linux的命令行中不可以直接敲"xxx.bat",系统会去找所有的命令。

想要调用bat文件,需要写绝对路径,比如"/home/myDir/xxx.bat",或者是切换到bat文件所在的目录,然后键入:"./xxx.bat".这里的"./"是告诉系统在当前目录下找名为"xxx.bat"的文件执行。

在bat文件中不可以使用windows特有的命令。

在执行bat文件之前,确保bat文件的权限是可执行的,如果没改权限的话,很有可能会报错误:Permission denied.更改权限的方式请自己查询"chmod"命令的使用方法.

注意:

其实这种方法不止是bat文件,各种可执行文件都可以以这种方式运行。

端口问题

有的时候,端口会被占用,导致一系列问题,比如:

clash端口显示为0,导致代理失败。这可能是因为clash的进程没有结束,导致端口一直被占用。当然这只是其中一种情况,其他的情况请自行百度。这种问题的解决方式如下:

1.查看当前所有端口(已知端口的话这步可以跳过)

代码语言:bash复制
netstat -nultp

指令结果中端口为listen即被占用。

2.查看自己的端口有没有被占用

代码语言:bash复制
# 查看7890端口是否被占用
netstat -anp |grep 7890

没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了。

在Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息。

3.找到对应端口在系统中的进程ID(PID)

代码语言:bash复制
lsof -i :7890

4.结束进程

代码语言:bash复制
kill -9 [PID]
注意:有的时候电脑端没用,但手机端或者平板端正常。可能有以下原因:
  • 电脑端节点链接没更新
  • 浏览器安装有代理插件
  • 没有打开系统接口
  • 如果上面的都没有问题,那么可以尝试打开tune模式,有网后再关掉tune即可(有点玄学,还不清楚是为什么)

xshell使用技巧

快捷键

功能

ctrl insert

复制

shift insert

粘贴

shift/ctrl table

快速切换打开的tab

参考链接

Xshell不能使用退格、删除键的解决方案

解决方法:设置xshell,文件–>打开—>属性–>终端 -->键盘 把delete 和backspace序列改为 ASCII 127即可。

不想设置可以通过ctrl backsace实现删除

xshell修改快捷键

参考链接

linux下运行.m文件

进入m文件所在目录后,运行

代码语言:bash复制
$ matlab -nodesktop -nosplash -r matlabfile

只用文件名matlabfile,不能添加.m

第二种方式

可以用xmanger远程显示界面,但画图可能会报错:

代码语言:bash复制
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.

这是因为显卡不支持,解决办法:

在matlab的命令框中输入

代码语言:bash复制
opengl('save','software')

重启matlab即可

第二种方式延迟比较高

注:linux系统下matlab快捷键与windows不同。

后台运行.m文件

与python不同,matlab相对来说麻烦一点

代码语言:bash复制
nohup matlab <test2.m> fill.out &

<指向python,>指向要输出的日志文件,可以没有。即:

代码语言:bash复制
nohup /usr/matlab/bin/matlab   <fill.m> &

上面这个也没有将matlab写入环境变量的情况。

参考博客

linux如何修改文件内容

以修改index.php文件为例,其他文件类似(例如py文件,m文件等)

1、使用快捷键打开终端命令行模式。

2、输入以下命令进入index.php文件并按下“i”键进入编辑模式。

代码语言:bash复制
vim index.php

3、修改完之后,通过“Esc键” “:wq”保存退出即可。

查看特定进程

Linux系统是一个强大的操作系统,它可以运行很多有用的进程,从而为用户提供充分的功能服务。有时用户可能想要查找特定进程,这意味着用户需要知道该进程的名称、PID和其他信息。本文将介绍在Linux系统中寻找特定进程的方法。

首先,在Linux系统中使用ps命令查找特定进程。例如,可以使用ps -ef | grep 进程名称 命令来查找特定进程。该命令支持正则表达式,可以模糊匹配特定进程,并显示该进程的PID、用户ID等信息,以下是该命令的示例:

代码语言:bash复制
$ ps -ef | grep apache2
root      2890     1  0  2017  ?  03:45:41 /usr/sbin/apache2 - k start

linux磁盘空间对不上

发现,Used和Avail加起来不够Size,莫名被吃掉一部分

其实这是Linux文件系统的一种安全策略,它默认会为root用户保留5%的磁盘空间,留作紧急情况使用。这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash

我们可以通过tune2fs修改预留空间的比例

代码语言:bash复制
tune2fs -m 1 /dev/vda1

linux下安装matlab的一些问题

linux下安装好后可能会出现matlab无法连接到mathwork,解决方法:重新安装mathwork

下载链接

执行以下命令安装就行

代码语言:bash复制
./mathworksservicehost_2023.3.0.6_glnxa64_installer.bin

但执行matlab一段时间后,不知道为什么会闪退,报错信息Segmentation fault (core dumped),现在这个错误莫名其妙没有了。

断开xshell时程序依然执行:screen

GNU Screen一款由GNU计划开发的用于命令行终端切换的软件,可以当做窗口管理器的命令行界面版本。只要Screen本身没有被终止,在其内部运行的会话都可以恢复,特别适合执行一些运行时间长的任务。

安装screen工具。

Linux系统默认没有screen工具,需要先进行安装。

CentOS系列系统安装命令如下所示。

说明 CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),按照社区规则,CentOS 6/8的源地址内容已移除。当您在CentOS 6/8系统内继续使用默认配置的源地址时会发生报错。建议您先切换CentOS 6/8的源地址,然后再进行操作。具体操作,请参见CentOS 6 EOL如何切换源?和CentOS 8 EOL如何切换源?

代码语言:bash复制
yum install screen

Ubuntu系列系统安装

代码语言:bash复制
sudo  apt-get  install screen

执行如下命令,创建screen窗口。

代码语言:bash复制
screen -S [$Name]

执行如下命令,列出screen窗口。

代码语言:bash复制
screen -ls

当需要运行脚本、执行程序时,在命令前添加screen即可。

同时按Ctrl a d键,就可以退出SSH登录,但不会影响screen程序的运行。

需要继续工作时,登录实例,然后执行如下命令,恢复会话即可。

代码语言:bash复制
screen -r -d

示例

第一种:screen命令,需要安装

yum install screen #安装

screen -S new1  #开启一个new1的screen

执行一些命令,然后中断ssh,直接关闭

然后又ssh重新登录进去

screen -r new1  #可以看到依然在的

解决screen状态为Attached连上不的问题

screen -ls #列出screen

screen -D -r <session-id> #-D -r 先踢掉前一用户,再登陆

screen -ls                    #查看所有screen会话

按键盘上面的Ctrl a,然后再按d    #保存当前的screen会话

exit                         #退出screen

screen -wipe  new1            #删除会话

保留screen做法: 先按ctrl a,再按d,exit是直接退出screen新建窗口

screen -X -S   quit

断开xshell时程序依然执行:nohup

nohup

直接执行

代码语言:bash复制
nohup python3 main.py 

查看服务运行日志 tail -f nohup.out

& 表示后台运行

将输出放到 main.log 文件中

代码语言:bash复制
nohup python3 main.py  > main.log 

查看应用运行进程

代码语言:bash复制
ps -ef |grep python
代码语言:bash复制
jobs -l  //查看任务,返回任务编号n和进程号
bg  %n   //将编号为n的任务转后台运行
fg  %n   //将编号为n的任务转前台运行
ctrl z    //挂起当前任务
ctrl c    //结束当前任务

关闭进程

kill -9 进程号

代码语言:bash复制
kill -9 6189

在执行命令nohup sh xxx.sh &的时候,提示

nohup: ignoring input and appending output to `nohup.out’

意思是 :忽略输入并将输出附加到`nohup.out’

程序也能正常启动。

如果不想看到这个提示可以使用:

nohup sh xxx.sh >a.log 2>& 1 &

或者

nohup sh xxx.sh &>a.log &

如果不想输入到a.log 可以使用

nohup sh xxx.sh >/dev/null 2>& 1 &

其中:

nohup放到命令开头表示不挂起,表示即使退出终端该进程也不会掉, & 放在命令到结尾,表示后台运行

/dev/null 表示空设备文件 (位桶(bit bucket)或者黑洞(black hole)的地方)

0 表示stdin标准输入

1 表示stdout标准输出

2 表示stderr标准错误

2>&1标识将错误输出重定向到标准输出,注意>& 不能分开

为用户增加sudo权限(修改sudoers文件)

在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。在使用sudo命令的过程中,我们经常会遇到当前用户不在sudoers文件中的提示信息,如果解决该问题呢?通过下面几个步骤,可以很简单的解决此问题。

1、切换到root用户权限

代码语言:bash复制
Last login: Tue Sep 24 20:50:51 2013 from 192.168.30.171
[user@Compile ~]$ su root
password:
[root@Compile user]#

2、查看/etc/sudoers文件权限,如果只读权限,修改为可写权限

代码语言:bash复制
[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 9月  25 00:57 /etc/sudoers
[root@Compile user]# chmod 777 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-rwxrwxrwx. 1 root root 4030 9月  25 00:57 /etc/sudoers
[root@Compile user]#

执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:

代码语言:bash复制
root ALL=(ALL) ALL
#在后面一行加上
user ALL=(ALL) ALL

说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)

4、保存退出,并恢复/etc/sudoers的访问权限为440

代码语言:bash复制
[root@Compile user]# chmod 440 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 9月  25 00:57 /etc/sudoers
[root@Compile user]#

5、切换到普通用户,测试用户权限提升功能

代码语言:bash复制
su username
sudo su

Linux忘记账户密码(虚拟机)

关于 虚拟机下 Redhat7版本 root用户密码忘记的解决方法

一、开机

二、出现这个不用管,点取消(没有出现也是正常的)

三、出现这个,键盘敲e进入编辑

四、鼠标移动到最下,在UTF-8后,写rd.break,然后 ctrl x 进入到下一个环节

五、等待出现命令行

六、按顺序敲如下命令:

七、注意此时的命令前缀已经不同,输入命令,修改密码

八、注意输入上个命令后,会在几个小方格后停顿一下,也就是输入第一次密码(有可能也不会出现小方格乱码,按照提示进行即可)

重复密码,也是在下一行方格后停顿。

注意:密码输入皆不显示。自己注意输入正确即可

九、出现passwd后面接一串方格,就说明改完了。接着输入下列命令

十、最后等待,重启就好(时间有点长)。出现登录画面,ok,你就可以通过root的新密码登录了(但该机有点问题,重启报错,下次登录就会发展密码已经修改完成:账号名为root)

image.pngimage.png

普通用户忘记密码

解决方法较为简单,使用超级用户身份登录后,修改普通用户的密码

代码语言:bash复制
passwd username         ##username为需要配置的用户名称

如下所示:

代码语言:bash复制
[root@localhost ~]# passwd miya
Changing password for user miya.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

参考文章1,文章2

0 人点赞