当前位置:   article > 正文

Ubuntu 进阶命令_no mta installed discarding output

no mta installed discarding output

前言

这里记录的都是之前有使用过的散装知识点, 复习方便而已

执行文件:

  1. 首先是确定文件是否具有可执行权限-x
  2. 在文件目录下使用./filename即可运行文件

crontab定时执行任务:

参考资料:

https://blog.csdn.net/katyusha1/article/details/78619549

启动crontab日志生成:

  1. 修改rsyslog:

    这里使用vim编辑器

    sudo vim /etc/rsyslog.d/50-default.conf
    
    • 1

    找到此条:

    cron.*              /var/log/cron.log #将cron前面的注释符去掉 
    
    • 1

    image-20210223131027078

  2. 重启rsyslog & cron

    sudo  service rsyslog  restart
    sudo service cron restart
    
    • 1
    • 2
  3. 进入日志目录查看日志:

    cd /var/log
    
    • 1

    此时目录中以存在cron.log:

    image-20210223131235234

No MTA installed, discarding output:

查看日志发现一个问题:

日志中并没有指令输出, 而是

No MTA installed, discarding output
  • 1

参考资料:

https://shipengliang.com/software-exp/no-mta-installed-discarding-output%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.html

这里是由于crontab执行脚本时会以邮件的形式发送至指定邮箱, 而并没有直接输出至日志中
如果没有安装邮箱服务器, 则就会显示这条提示

解决的方法是在每条指令的末尾添加输出重定向并加个2>&1, 如:

原指令 > /var/log/cron_output.log 2>&1
  • 1

这样就能在另外的文件中获取到指令输出

开机自动执行脚本:

参考资料:

https://www.jb51.net/article/175654.htm

基本步骤:

  1. 创建一个.sh脚本

  2. 赋予可执行权限, 一般是755

  3. 写入脚本代码

  4. copy到**/etc/init.d/**目录下

  5. 设置开机自启:

    sudo update-rc.d test.sh defaults
    
    • 1

之后可以重启ubuntu测试脚本是否运行

自动安装驱动:

这个在安装显卡驱动的时候尝试了一次

  1. 查看当前驱动状态:

    ubuntu-drivers devices
    
    • 1

卸载显卡驱动:

To remove CUDA Toolkit:
$ sudo apt-get --purge remove "*cublas*" "cuda*"
To remove NVIDIA Drivers:
$ sudo apt-get --purge remove "nvidia*" 	# 这个指令可能导致有些东西卸不掉
$ sudo apt-get --purge remove "*nvidia*"
  • 1
  • 2
  • 3
  • 4
  • 5

删除剩余的所有关联:

sudo apt-get autoremove
  • 1

注意, 这个指令慎用
由于本地环境是刚安装的新ubunt, 所以爷毫无畏惧

但是由于这个命令可能会移除一些不想移除的东西, 找回来有非常麻烦

参考资料:

https://zhuanlan.zhihu.com/p/160926980

查看系统PCI设备:

lspci
  • 1
lspci [-vvn]
  • 1

​ -v:观察更多的PCI设备信息;

-vv:比-v还要详细的信息;

-n:直接观察PCI的ID而不是厂商名称

禁用nouvea显卡驱动:

nouvea是ubuntu默认为显卡安装的一个开源驱动

首先查看nouvea是否在运行:

lsmod | grep nouveau
  • 1

如果没有任何输出, 则证明nouveau没运行

否则需要禁用nouveau显卡驱动;

  1. 在/etc/modprobe.d/文件夹下创建blacklist-nouveau.conf文件

  2. 在文件中添加内容为

    blacklist nouveau
    options nouveau modeset=0
    
    • 1
    • 2
  3. 再更新一下内核

    sudo update-initramfs -u
    
    • 1
  4. 输入reboot命令重启系统,强力保证blacklist生效。

  5. 输入lsmod | grep nouveau查看是否vouveau真的被干掉了。
    如果,没有任何内容出现,那么恭喜你,成功除掉了nouveau驱动。

关闭 & 打开图形界面:

关闭图形界面:

sudo systemctl set-default multi-user.target

sudo reboot
  • 1
  • 2
  • 3

打开图形界面

sudo systemctl set-default graphical.target

sudo reboot
  • 1
  • 2
  • 3

添加与删除PPA源:

参考资料:

https://blog.csdn.net/lu_embedded/article/details/55803500

PPA,英文全称为 Personal Package Archives,即个人软件包档案。是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launchpad 进行编译并发布为二进制软件包,作为 apt / 新立得(Synaptic)源供其他用户下载和更新。
  
PPA 的一般形式是: ppa:user/ppa-name

  1. 添加 PPA 源

    #添加 PPA 源的命令为:
    sudo add-apt-repository ppa:user/ppa-name
    
    #添加好记得要更新一下: 
    sudo apt-get update
    
    • 1
    • 2
    • 3
    • 4
    • 5
  2. 删除 PPA 源

    #删除 PPA 源的命令格式则为:
    sudo add-apt-repository -r ppa:user/ppa-name
    
    #然后进入 /etc/apt/sources.list.d 目录,将相应 ppa 源的保存文件删除。
    
    #最后同样更新一下:
    sudo apt-get update
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

移除已经安装的GCC 或 G++:

一个系统下可能有多个版本的gcc 或 g++, 需要移除干净的话:

sudo apt-get remove g++
sudo apt-get remove gcc
sudo apt-get remove gcc-*
sudo apt-get remove g++-*
  • 1
  • 2
  • 3
  • 4

即可全部移除

监控网络流量:

这里好用的命令行工具为ifstat

sudo apt-get install ifstat

ifstat
  • 1
  • 2
  • 3

之后就能监控网络流量了, 每秒刷新一次

image-20210301201717610

安装指定版本的GCC:

参考资料:

https://blog.csdn.net/linuxarm123/article/details/99292991

按照这篇博客的做基本没啥问题

这里以gcc-8.2.0为例

  1. 安装默认版本的gcc

  2. 安装默认版本的g++

    这俩必装, 后头的编译make等要用到, 等make install完成后会被自动替换

  3. 查看默认gcc & g++的版本:

    gcc -v
    g++ -v
    
    • 1
    • 2

    如果不合适的, 则需要手动安装指定的版本

  4. 下载指定版本的gcc:

    这里直接去清华镜像源里挑

    https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/

    找到想要的gcc, copy完整的url地址, 到ubuntu中:

    wget url
    
    • 1

    直接网络下载

    也可以在其他电脑上下载, 然后scp到ubuntu上

  5. 切换为root:

    su root
    
    • 1
  6. 进入到/root/

    并将之前的tar.gz包cp到这里

  7. 在此目录中解压

    会出来一个相应的文件夹:

    image-20210301210308404

  8. 进入到gcc-8.2.0中, 下载编译需要的依赖:

    cd /root/gcc-8.2.0
    ./contrib/download_prerequisites	# 直接运行内置的下载脚本
    
    • 1
    • 2

    由于这里是从gcc官网下载, 所以会很慢, 没有梯子的情况下网速只有几十KB

    image-20210301201717610

    但好在文件不多, 总共就4个(可能更多), 耐心等待即可

  9. 建立编译过程文件的临时目录:

    这里直接建立和版本名对应的文件夹

    mkdir /root/gbuild-8.2.0
    cd /root/gbuild-8.2.0
    /root/gcc-8.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    
    • 1
    • 2
    • 3
  10. 编译并安装:

    make -j 想使用的CPU核数 	# 由于源码庞大, 编译时间将会很久, 这里建议使用多线程编译
    						# 注意预留一部分的CPU核心用于监控进度, 并确保有足够的内存, 不然容易死机
    						# 我在编译的时候开了40个核心结果直接内存塞满死机了
    
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
  11. 测试结果:

    gcc -v
    
    • 1

    image-20210301211021415

    可以看到, gcc 的版本已经从原先的7.4变成了8.2.0, 表明安装成功

重启网卡:

service network restart
  • 1

2021-3-30 11:42:39:

之后有一次没连上ipv4, 想重启网卡, 结果此命令遇到了问题:

image-20210330114302847

可以尝试一下命令:

service network-manager restart
  • 1

image-20210330114404368

之后重启成功:

image-20210330114422708

任务后台执行:

有些命令不会很快的返回, 占用控制台响应时间, 可以放到后台执行

在命令最后添加一个& 即可

2>&1:

含义:将标准错误输出重定向到标准输出

这样, 命令的stderr也会输出到stdout中, 可用于log输出或屏幕显示

在Linux系统中0 1 2是一个文件描述符

名称代码操作符Java中表示Linux 下文件描述符(Debian 为例)
标准输入(stdin)0< 或 <<System.in/dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout)1>, >>, 1> 或 1>>System.out/dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr)22> 或 2>>System.err/dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

符号>&是一个整体,不可分开,分开后就不是上述含义了。

写成2&>1也是不可以的

查看与切换shell:

  1. 查看可用的shell:

    cat /etc/shells
    
    • 1

    image-20210305175323839

  2. 查看当前使用的shell:

    echo $SHELL
    
    • 1

    image-20210305175342999

  3. 切换shell

    直接用shell路径即可

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/75611
推荐阅读
相关标签
  

闽ICP备14008679号