Для запуска и остановки сервера оптимальный вариант - это создание файлов, которые специально для этого и предназначены. Ничего сложного - но и в этом вопросе у многих возникают слжности.

===========================

СЕРВЕР под WINDOWS
- Открываем папку cod4
- Правой кнопкой мыши на файл iw3mp.exe. Выберите Создать ярлык. Перетащите созданный ярлычок на рабочий стол.
- Кликните правой кнопкой мышки на ярлыке и выберите Свойства
- Найдите поле Объект, там должно быть написано cod4iw3mp.exe
- Добавьте в конец этой строчки нижеприведенные команды, при этом ни в коем случае не повредите ничего, что написано ранее:
+set dedicated 2 +set net_ip xxx.xxx.xxx.xxx +set net_port 28960 +set sv_maxclients 32 +set sv_punkbuster "1" +exec server.cfg +map_rotate
(xxx.xxx.xxx.xxx – это ip-адрес вашего сервера)

Примечание: Убедитесь, что между iw3mp.exe” и +set dedicated 2 есть пробел
Примечание: Замените xxx.xxx.xxx.xxx на ip-адрес вашего сервера
Примечание: Замените параметр sv_maxclients 32 на любой другой, если вы хотите, чтобы максимальное количество игроков было больше или меньше 32.

Для остановки отдельный файл не требуется, просто выключите игру.

===========================
В файле start_cod4 лучше прописать следующий скрипт
#!/bin/sh
cd /путь_к_корневой_папке_с_игрой
killall -w cod4_lnxded-bin
./cod4_lnxded +set dedicated 2 +sets gamestartup \"`date +"%D %T"`\" +set net_ip ххх.ххх.ххх.ххх +set net_port ххххх +set sv_punkbuster 1 +set loc_language 6 +exec dedicated.cfg +map_rotate>/opt/jampire/cod4/start4.log 2>/opt/jampire/cod4/start4.log &
либо в особо тяжелых случаях
#!/bin/sh
cd /путь_к_корневой_папке_с_игрой
kill -9 $(ps aux | grep [c]od4_lnxded-bin | gawk '{print $2}')
sleep 2
./cod4_lnxded +set dedicated 2 +sets gamestartup \"`date +"%D %T"`\" +set net_ip ххх.ххх.ххх.ххх +set net_port ххххх +set sv_punkbuster 1 +set loc_language 6 +exec dedicated.cfg +map_rotate>/opt/jampire/cod4/start4.log 2>/opt/jampire/cod4/start4.log &
Оба эти скрипта позволяют не только стартовать сервер, но и перезапускать его.
gamestartup \"`date +"%D %T"`\" - для работы веб-статистики.
+set sv_punkbuster 1 - в особо тяжелых случаях можно дублировать запуск пб и через строку запуска.
+set loc_language 6 - установка дефолтного языка сервера (6 - русский язык).
+exec dedicated.cfg - конфиг сервера в линуксе не рекомендуется называть server.cfg. Называйте его, как хотите, только не server.cfg.
Конструкция, идущая после +map_rotate, отвечает за вывод лога старта сервера в указанный вами файл. Эта конструкция позволяет избежать захламления консоли во время запуска.
Права на файл стоит лучше расшифровать (даже я секунд 10 тупил, думая, что там написано )
chmod 755
Вышеприведенный файл остановки пригодится, только если у вас один сервак (хотя я не проверял, как работает команда с ключем i). а если на одной машине крутятся несколько серверов? Такая команда может убить их все!
Тогда для каждого сервака создаете конфиг сервера с отличительным именем (напр., dedicated1.cfg, dedicated2.cfg), создаете два файла остановки, в первом пишите (stop1):
#!/bin/bash
kill -9 $(ps aux | grep [d]edicated1.cfg | gawk '{print $2}')
во втором (stop2)
#!/bin/bash
kill -9 $(ps aux | grep [d]edicated2.cfg | gawk '{print $2}')
Ну и напоследок, скрипт проверки статуса сервера:
#!/bin/bash
ps aux | grep [d]edicated

СЕРВЕР под LINUX
- Создаём файл без расширения и обзываем его, например start_cod4
- делаем в нём запись:
#!/bin/sh
cd /путь к корневой папке с игрой
./cod4_lnxded +set net_ip xxx.xxx.xxx.xxx +set net_port ххххх +set dedicated 2 +exec server.cfg +map_rotate & тут всё как и в настройках под винду. Запуск Панкбастера не прописывается, т.к. он как правило пишется в серверном конфиге.
cod4_lnxded - линуксовский бинарник для работы игры в системе Linux.
- Задайте вашему файлу права допуска (команда chmod в Линуксе):
Чтение для владельца
Запись для владельца
Запуск/поиск для владельца
Чтение для группы
Запуск/поиск для группы
Чтение для других
Запуск/поиск для других

Файл остановки создаётся полностю на подобие файла запуска, только содержимое должно выглядеть так:
#!/bin/sh
killall -i cod4_lnxded