如何停止和禁用Linux系统中的不需要的服务
从Linux中删除不需要的服务
在本文中,我们将讨论一些您不需要的不需要的应用程序和服务,但它们是在操作系统安装期间默认安装的,并且不知不觉地开始吃您的系统资源。
让我们首先知道使用以下命令在系统上运行什么样的服务。
[avishek@howtoing]# ps ax
示例输出
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 \_ [migration/0]
4 ? S 0:09 \_ [ksoftirqd/0]
5 ? S 0:00 \_ [migration/0]
6 ? S 0:24 \_ [watchdog/0]
7 ? S 2:20 \_ [events/0]
8 ? S 0:00 \_ [cgroup]
9 ? S 0:00 \_ [khelper]
10 ? S 0:00 \_ [netns]
11 ? S 0:00 \_ [async/mgr]
12 ? S 0:00 \_ [pm]
13 ? S 0:16 \_ [sync_supers]
14 ? S 0:15 \_ [bdi-default]
15 ? S 0:00 \_ [kintegrityd/0]
16 ? S 0:49 \_ [kblockd/0]
17 ? S 0:00 \_ [kacpid]
18 ? S 0:00 \_ [kacpi_notify]
19 ? S 0:00 \_ [kacpi_hotplug]
20 ? S 0:00 \_ [ata_aux]
21 ? S 58:46 \_ [ata_sff/0]
22 ? S 0:00 \_ [ksuspend_usbd]
23 ? S 0:00 \_ [khubd]
24 ? S 0:00 \_ [kseriod]
.....
现在,让我们快速浏览一下使用接受连接(端口)进程netstat命令 ,如下图所示。
[avishek@howtoing]# netstat -lp
示例输出
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:31138 *:* LISTEN 1485/rpc.statd
tcp 0 0 *:mysql *:* LISTEN 1882/mysqld
tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind
tcp 0 0 *:ndmp *:* LISTEN 2375/perl
tcp 0 0 *:webcache *:* LISTEN 2312/monitorix-http
tcp 0 0 *:ftp *:* LISTEN 2174/vsftpd
tcp 0 0 *:ssh *:* LISTEN 1623/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1511/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 2189/sendmail
tcp 0 0 *:cbt *:* LISTEN 2243/java
tcp 0 0 *:websm *:* LISTEN 2243/java
tcp 0 0 *:nrpe *:* LISTEN 1631/xinetd
tcp 0 0 *:xmltec-xmlmail *:* LISTEN 2243/java
tcp 0 0 *:xmpp-client *:* LISTEN 2243/java
tcp 0 0 *:hpvirtgrp *:* LISTEN 2243/java
tcp 0 0 *:5229 *:* LISTEN 2243/java
tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind
tcp 0 0 *:http *:* LISTEN 6439/httpd
tcp 0 0 *:oracleas-https *:* LISTEN 2243/java
....
在上面的输出中,您注意到您可能不需要在服务器上的一些应用程序,但它们仍然运行如下:
smbd和nmbd
smbd和nmbd是Samba进程的守护程序。 你真的需要在Windows或其他机器上导出smb共享。 如果没有! 为什么这些进程运行? 您可以安全地终止这些进程,并禁止它们在下次引导计算机时自动启动。
2. Telnet
你需要通过互联网或局域网进行双向交互式文本导向通信吗? 如果没有! 杀死这个进程并关闭它从启动开始。
3. rlogin
您需要通过网络登录到另一台主机。 如果没有! 杀死此进程并禁止它在启动时自动启动。
rexec
远程进程执行也称为rexec,您可以在远程计算机上执行shell命令。 如果不需要在远程机器上执行shell命令,只需杀死该进程即可。
5. FTP
您需要通过Internet将文件从一个主机传输到另一个主机吗? 如果不是,您可以安全地停止服务。
6.自动挂载
你需要自动挂载不同的文件系统来启动网络文件系统吗? 如果没有! 为什么这个进程正在运行? 为什么要让此应用程序使用您的资源? 杀死进程并禁止它自动启动。
7.命名
你需要运行NameServer(DNS)吗? 如果不是在地球上迫使你运行这个过程,并允许吃掉你的资源。 先停止运行的进程,然后在启动时关闭它运行它。
8.lpd
lpd是可以打印到该服务器的打印机守护程序。 如果您不需要从服务器打印,则可能是您的系统资源正在被占用。
9.Inetd
您是否正在运行任何inetd服务? 如果你运行独立的应用程序像ssh使用其他独立的应用程序像Mysql,Apache等,那么你不需要inetd。 更好地杀死进程,并禁用它自动下次启动。
10. portmap
Portmap是开放网络计算远程过程调用(ONC RPC)并使用守护程序rpc.portmap和rpcbind。 如果这些进程正在运行,则表示您正在运行NFS服务器。 如果NFS服务器运行未注意到意味着您的系统资源被不必要地用尽。
如何在Linux中杀死进程
为了杀死在Linux下运行的过程中,使用' 杀PID“命令。 但是,在运行Kill命令之前,我们必须知道进程的PID。 例如,在这里我想找个' 的cupsd“进程的PID。
[avishek@howtoing]# ps ax | grep cupsd
1511 ? Ss 0:00 cupsd -C /etc/cups/cupsd.conf
所以,'cupsd将 '处理的PID为“1511”。 要终止该PID,请运行以下命令。
[avishek@howtoing]# kill -9 1511
要了解更多关于他们的榜样kill命令,阅读文章指南kill命令终止在Linux中程序
如何在Linux中禁用服务
在基于Red Hat分发比如Fedora和CentOS,使用一个名为“脚本chkconfig的 ”在Linux中启用和禁用正在运行的服务。
例如,允许在系统启动时禁用Apache Web服务器。
[avishek@howtoing]# chkconfig httpd off
[avishek@howtoing]# chkconfig httpd --del
在基于Debian的发行版,如Ubuntu的 ,Linux Mint的和其他基于Debian的发行版使用一种叫做更新- rc.d脚本。
例如,要在系统启动时禁用Apache服务,请执行以下命令。 在这里,'-f'选项代表力量是强制性的。
[avishek@howtoing]# update-rc.d -f apache2 remove
进行这些更改后,系统下次将启动,而不需要这些UN必要的过程,实际上将会节省我们的系统资源,并且服务器将更实用,快速,安全和安全。
参考:https://www.howtoing.com/remove-unwanted-services-from-linux/
很多时候最好把操作命令写成脚本的形式:
Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)--debian与ubuntu类似
注意:rc.local脚本里面启动的用户默认为root权限。
一、rc.local脚本
rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令。该脚本位于/etc/路径下,需要root权限才能修改。
该脚本具体格式如下:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing. exit 0
注意: 一定要将命令添加在exit 0之前。里面可以直接写命令或者执行Shell脚本文件sh。
二、关于放在rc.local里面时不启动的问题:
1、可以先增加日志输出功能,来查看最终为什么这个脚本不启动的原因,这个是Memcached启动时的样例文件:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing. #log
exec 2> /tmp/rc.local.log # send stderr from rc.local to a log file
exec 1>&2 # send stdout to the same log file
set -x # tell sh to display commands before execution #Memcached
/usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root exit 0
2、rc.local文件头部/bin/sh修改为/bin/bash
3、如果是执行sh文件,那么要赋予执行权限sudo chmod +x xxx.sh,然后启动时加上sudo sh xxx.sh
三、 update-rc.d增加开机启动服务
给Ubuntu添加一个开机启动脚本,操作如下:
1、新建个脚本文件new_service.sh
#!/bin/bash
# command content exit 0
2、设置权限
sudo chmod 755 new_service.sh
#或者
sudo chmod +x new_service.sh
3、把脚本放置到启动目录下
sudo mv new_service.sh /etc/init.d/
4、将脚本添加到启动脚本
执行如下指令,在这里90表明一个优先级,越高表示执行的越晚
cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90
5、移除Ubuntu开机脚本
sudo update-rc.d -f new_service.sh remove
6、通过sysv-rc-conf来管理上面启动服务的启动级别等,还是开机不启动
sudo sysv-rc-conf
7、update-rc.d的详细参数
使用update-rc.d命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下):
update-rc.d [-n] [-f] <basename> remove
update-rc.d [-n] <basename> defaults
update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
update-rc.d <basename> start|stop <NN> <runlevels>
-n: not really
-f: force
其中:
- disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
- start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
- NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
- runlevels:则指定了运行级别。
实例:
(1)、添加一个新的启动脚本sample_init_script,并且指定为默认启动顺序、默认运行级别(还记得前面说的吗,首先要有实际的文件存在于/etc/init.d,即若文件/etc/init.d/sample_init_script不存在,则该命令不会执行):
update-rc.d sample_init_script defaults
上一条命令等效于(中间是一个英文句点符号):
update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6
(2)、安装一个启动脚本sample_init_script,指定默认运行级别,但启动顺序为50:
update-rc.d sample_init_script defaults 50
(3)、安装两个启动脚本A、B,让A先于B启动,后于B停止:
update-rc.d A 10 40
update-rc.d B 20 30
(4)、删除一个启动脚本sample_init_script,如果脚本不存在则直接跳过:
update-rc.d -f sample_init_script remove
这一条命令实际上做的就是一一删除所有位于/etc/rcX.d目录下指向/etc/init.d中sample_init_script的链接(可能存在多个链接文件),update-rc.d只不过简化了这一步骤。
(5)禁止Apache/MySQL相关组件开机自启:
update-rc.d -f apache2 remove
update-rc.d -f mysql remove
8、服务的启动停止状态
#通过service,比如
sudo service xxx status
sudo service xxx start
sudo service xxx stop
sudo service xxx restart
9、查看全部服务列表
sudo service --status-all
参考:
http://www.jamescoyle.net/cheat-sheets/791-update-rc-d-cheat-sheet(查看全部服务列表)
http://blog.csdn.net/typ2004/article/details/38712887
http://blog.csdn.net/shb_derek1/article/details/8489112
http://blog.sina.com.cn/s/blog_79159ef50100z1ax.html
http://www.linuxidc.com/Linux/2013-01/77553p2.htm
http://www.jb51.net/article/100413.htm
http://blog.csdn.net/yplee_8/article/details/50342563
http://blog.163.com/zhu329599788@126/blog/static/66693350201731211940840/
rc.local不启动的原因:
http://fantaxy025025.iteye.com/blog/2097862
http://www.linuxidc.com/Linux/2016-12/138665.htm
http://blog.csdn.net/sea_snow/article/details/51051289
http://blog.csdn.net/benbenxiongyuan/article/details/58597036
http://www.cnblogs.com/liulanghe/p/3376380.html
http://blog.csdn.net/zhe_d/article/details/50312967
转自:https://www.cnblogs.com/EasonJim/p/7573292.html
Linux 编写一个简单的一键脚本
Linux中我们安装软件或者一些常用操作,都会接触很多命令,有时在关键时刻往往因为忘了一些简单的命令而苦恼,这时,我们不妨把命令写成可执行的批量脚本,可以减少很多重复而又容易忘记的代码,写成一键脚本还有一个好处就是方便迁移,可以直接将写好的sh文件在其他Linux平台运行。
格式:
文件后缀.sh
第一行代码需要指定路径来执行程序
#!/bin/sh 或#!/bin/bash
建议由后者,参见shell脚本头,#!/bin/sh与#!/bin/bash的区别.
一般一键脚本会要求用户输入各种选项:
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中
read -t -p "请输入用户名称:" name
echo -e "\n"
echo "用户名为:$name"
#提示“请输入密码”并等待30秒,把用户的输入保存入变量age中,输入内容隐藏
read -t -s -p "请输入用户密码:" age
echo -e "\n"
echo "用户密码为:$age"
#提示“请输入性别”并等待30秒,把用户的输入保存入变量sex中,只接受一个字符输入
read -t -n -p "请输入用户性别:" sex
echo -e "\n"
echo "性别为$sex"
逻辑判断:
read -t -p "请输入用户名称:" isYes
if [ "${isYes}" = "yes" ]; then
echo "输入了Yes"
fi
执行并行脚本:
wget -c http://www.xxx.com/xx.tar.gz && tar zxf xx.tar.gz && cd xx && ./install.sh
方法调用:
print_hello()
{
echo "hello"
}
print_hello
转自:https://blog.csdn.net/c__chao/article/details/79785571
echo命令
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法
echo(选项)(参数)
选项
-e:激活转义字符。
使用-e
选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
- \a 发出警告声;
- \b 删除前一个字符;
- \c 最后不加上换行符号;
- \f 换行但光标仍旧停留在原来的位置;
- \n 换行且光标移至行首;
- \r 光标移至行首,但不换行;
- \t 插入tab;
- \v 与\f相同;
- \\ 插入\字符;
- \nnn 插入nnn(八进制)所代表的ASCII字符;
参数
变量:指定要打印的变量。
实例
用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
\e[1;31m
将颜色设置为红色\e[0m
将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
转自:http://man.linuxde.net/echo
如何停止和禁用Linux系统中的不需要的服务的更多相关文章
- 在RedHat Linux系统中安装和配置snmp服务
检查系统是否安装snmp服务 # rpm -qa|grep snmp net-snmp-5.3.2.2-17.el5 net-snmp-perl-5.3.2.2-17.el5 net-snmp-dev ...
- 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令
安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...
- Linux系统中tomcat的安装及优化
Linux系统中Tomcat 8 安装 Tomcat 8 安装 官网:http://tomcat.apache.org/ Tomcat 8 官网下载:http://tomcat.apache.org/ ...
- 『学了就忘』Linux服务管理 — 75、Linux系统中的服务
目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...
- 理解Linux系统中的load average(图文版)转
一.什么是load average? linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount ...
- 【Linux】Linux系统中的权限详解
我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险.所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要. 一.文件基本权限 首先看下linux ...
- linux系统中的一些典型问题汇总
一.文件系统破坏导致系统无法启动:Checking root filesystem/dev/sda6 contains a file system with errors,check forcedAn ...
- Linux系统中的硬件问题如何排查?(6)
Linux系统中的硬件问题如何排查?(6) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- Linux系统中的硬件问题如何排查?(1)
在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工作,即使是经验相当丰富的用户有时也会遇上自己搞不定的状况,本文分享一些实用的技巧与处理方法,希望有助于读者朋友理解.查明并最终搞 ...
随机推荐
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...
- C# 使用PrintDocument 绘制表格 完成 打印预览 DataTable
经过不断的Google与baidu,最终整理出来的打印类 主要是根据两个参考的类组合而成,稍微修改了一下,参考代码及来源见最后(其中一份是VB语言的) 其中遇到的一些问题也已经得到了解决(分页,打印预 ...
- Python3函数式编程
Python函数式编程 函数式编程可以使代码更加简洁,易于理解.Python提供的常见函数式编程方法如下: map(函数,可迭代式)映射函数 filter(函数,可迭代式)过滤函数 reduce(函数 ...
- JSP_tomcat_mysql_注冊验证用户;
本文出自:http://blog.csdn.net/svitter 资源下载: github: git clone https://github.com/Svtter/JSP-tomcat-mysql ...
- RxJava2 源码解析(一)
概述 最近事情太多了,现在公司内部的变动,自己岗位的变化,以及最近决定找工作.所以博客耽误了,准备面试中,打算看一看RxJava2的源码,遂有了这篇文章. 不会对RxJava2的源码逐字逐句的阅读,只 ...
- 小程序canvas的一个坑
很奇怪,原来好好的,结果现在显示乱了,模拟器和手机都不一样.模拟器上,整个canvas都往右偏移了,手机上,右侧有一大片空白. 反复试验,发现问题是:page的对齐方式是center引起的,改为lef ...
- SQLSERVER 2012 之 “代理 XP”组件已作为此服务器安全配置的一部分被关闭
新建维护计划的时候遇到下图的报错信息 标题: Microsoft SQL Server Management Studio ------------------------------ “代理 XP” ...
- Fix Corrupt Blocks on HDFS
来自:http://centoshowtos.org/hadoop/fix-corrupt-blocks-on-hdfs/ How do I know if my hadoop hdfs filesy ...
- [BetterExplained]书写是为了更好的思考
我经常在走路和睡前总结所学过的内容,思考遗留的问题,一段时间的阅读和思考之后,一个总体的知识框架就会逐渐浮现在脑海中.然后我会将它书写下来,然而,我往往非常惊讶地发现,当我书写的时候,新的内容仍然源源 ...
- EntityFramework中常用的数据删除方式
最近在学EF,目前了解到删除操作有三种方式, 第一,官方推荐的先查询数据,再根据查询的对象,删除对象. 这是第一种,官方推荐 第二,自己创建一个对象,然后附加,然后删除. 这是第二种 第三,自己创建对 ...