Hadoop练习题

1、编写一个python程序,把当前程序和路径加入到PATH环境变量,在任何地方都可以执行

import os
import sys

# 获取当前程序所在路径
current_path = os.path.dirname(os.path.abspath(sys.argv[0]))

# 获取原始的PATH环境变量值
original_path = os.environ.get('PATH', '')

# 将当前程序所在路径添加到PATH环境变量中
new_path = f"{current_path}:{original_path}"

# 更新环境变量
os.environ['PATH'] = new_path

# 打印更新后的环境变量
print("PATH环境变量已更新:")
print(os.environ['PATH'])

运行以上代码后,会将当前程序所在路径添加到PATH环境变量中,并打印出更新后的环境变量值。

请注意,在某些操作系统中,对环境变量的更改只会在当前的Python进程中生效。如果你希望永久将当前程序所在路径添加到PATH环境变量中,你需要手动在操作系统的配置中进行设置。具体的方法因操作系统而异,请根据你使用的操作系统版本和发行版进行相应的配置。

2、编写一个shell程序,输入2个数据,比较两个数据得大小

你可以使用read命令获取用户输入的2个数据,然后通过Linux系统提供的比较符号进行大小比较。下面是一个示例程序,演示如何编写一个简单的shell程序来实现这个功能:

#!/bin/bash

# 提示用户输入两个数
read -p "请输入第一个数:" num1
read -p "请输入第二个数:" num2

# 比较两个数的大小并输出结果
if [ $num1 -gt $num2 ]
then
    echo "$num1 大于 $num2"
elif [ $num1 -lt $num2 ]
then
    echo "$num1 小于 $num2"
else
    echo "$num1 等于 $num2"
fi

在以上示例程序中,我们使用read命令读取用户输入的2个数,并使用-p选项来显示提示信息。然后,我们使用Linux系统提供的比较符号-gt-lt-eq来判断两个数的大小关系,并输出相应的结果。

要让这个程序可以在Linux操作系统上运行,需要将上述代码保存到一个以.sh结尾的文件中(例如compare.sh),然后使用chmod命令将该文件设置为可执行文件:

chmod +x compare.sh

接着就可以运行该程序了:

./compare.sh

然后依次输入2个数,即可得到它们的大小比较结果。

3、编写一个shell程序,获取CPU的使用率、内存使用率,并做打印显示

要获取CPU的使用率和内存使用率,可以使用Linux下的top命令结合其他工具来实现。下面是一个示例的shell程序,用于获取并显示CPU使用率和内存使用率:

#!/bin/bash

# 获取当前CPU使用率,并提取第三列数据(即CPU使用率)
cpu_usage=$(top -bn 1 | grep 'Cpu(s)' | awk '{print $2}')

# 获取当前内存使用率,并提取第四列数据(即内存使用率)
memory_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

# 打印CPU使用率和内存使用率
echo "当前CPU使用率:$cpu_usage%"
echo "当前内存使用率:$memory_usage%"

在以上示例程序中,我们首先使用top命令获取当前的系统状态信息,然后使用grepawk命令来提取CPU使用率和内存使用率的数据。最后,使用echo命令打印出获取到的CPU使用率和内存使用率。

将上述代码保存到一个以.sh结尾的文件中(例如system_status.sh),然后使用chmod命令将该文件设置为可执行文件:

chmod +x system_status.sh

接着就可以在命令行中运行该程序了:

./system_status.sh

运行后,你将看到类似如下的输出:

当前CPU使用率:12.3%
当前内存使用率:45.6%

其中的具体数值会根据当前系统状态而有所不同。

4、编写一个shell程序,获取/var/log/messages文件内容,并逐行打印显示。

要获取并逐行打印显示/var/log/messages文件的内容,可以使用Linux下的cat命令结合循环来实现。下面是一个示例的shell程序:

#!/bin/bash

# 逐行读取/var/log/messages文件并打印显示
while read -r line
do
  echo "$line"
done < /var/log/messages

在以上示例程序中,我们使用read命令结合while循环,逐行读取/var/log/messages文件的内容,并通过echo命令将每行内容打印显示出来。

将上述代码保存到一个以.sh结尾的文件中(例如print_messages.sh),然后使用chmod命令将该文件设置为可执行文件:

chmod +x print_messages.sh

接着就可以在命令行中运行该程序了:

./print_messages.sh

运行后,程序会将/var/log/messages文件的内容逐行打印显示出来。请注意,你需要有足够的权限来读取该文件。如果没有足够的权限,请以超级用户或具有足够权限的用户身份运行该程序。

5、编写一个shell程序,实现1+3+5+7+9+...+1001的值

#!/bin/bash

# 初始化求和变量为0
sum=0

# 使用循环计算1+3+5+7+9+...+1001的值
for ((i = 1; i <= 1001; i += 2))
do
  sum=$(($sum + $i))
done

# 打印计算结果
echo "1+3+5+7+9+...+1001 的值为:$sum"

在以上示例程序中,我们使用for循环从1开始,每次递增2,直到达到1001为止。在每次循环中,将当前的数值累加到sum变量中。最后,使用echo命令打印出计算结果。

将上述代码保存到一个以.sh结尾的文件中(例如calculate_sum.sh),然后使用chmod命令将该文件设置为可执行文件:

chmod +x calculate_sum.sh

接着就可以在命令行中运行该程序了:

./calculate_sum.sh

运行后,你将看到以下输出:

1+3+5+7+9+...+1001 的值为:251001

6、编写一个shell程序,实现冒泡排序算法

冒泡排序是一种简单的排序算法,通过多次遍历待排序列表,并比较相邻元素的大小,将较大(或较小)的元素逐步交换到列表的末尾(或开头),以达到排序的目的。以下是一个示例的shell程序,实现冒泡排序算法:

#!/bin/bash

# 待排序的列表
arr=(5 3 8 2 1 4)

# 获取列表长度
length=${#arr[@]}

# 冒泡排序算法
for ((i = 0; i < length - 1; i++))
do
  for ((j = 0; j < length - 1 - i; j++))
  do
    if ((arr[j] > arr[j+1]))
    then
      # 交换相邻元素
      temp=${arr[j]}
      arr[j]=${arr[j+1]}
      arr[j+1]=$temp
    fi
  done
done

# 打印排序结果
echo "排序结果:${arr[*]}"

在以上示例程序中,我们使用一个名为arr的数组表示待排序的列表。首先,通过${#arr[@]}获取列表的长度。然后,我们使用两层循环来遍历列表并比较相邻元素的大小。如果发现当前元素大于后一个元素,则交换它们的位置。

最后,使用echo命令打印出排序结果。${arr[*]}会将数组中的所有元素连接起来作为一个字符串输出。

将上述代码保存到一个以.sh结尾的文件中(例如bubble_sort.sh),然后使用chmod命令将该文件设置为可执行文件:

chmod +x bubble_sort.sh

接着就可以在命令行中运行该程序了:

./bubble_sort.sh

运行后,你将看到以下输出:

排序结果:1 2 3 4 5 8

即冒泡排序算法对待排序的列表进行了排序。如果你想排序其他列表,只需修改arr数组的内容即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值