Looks like the problem is exactly in the description - the job is already running.
Try stopping the job first, then re-running it. Either with the GUI, or
Other things to check:
What is the job doing? Can you do that (run the script, for example) directly (not using Agent)?
Has the job got elements (e.g. a script) which can never actually finish, therefore the job is never going to stop (and therefore will not start again on schedule).
It's a bit hacky, but you can schedule a job-killing job to stop any jobs that are over-running (although it's usually better to try fix your jobs so they finish properly).
This script from SQL Server Central provides some handy info about currently running jobs:
j.name AS job_name,
ISNULL(last_executed_step_id,0)+1 AS current_executed_step_id,
FROM msdb.dbo.sysjobactivity ja
LEFT JOIN msdb.dbo.sysjobhistory jh
ON ja.job_history_id = jh.instance_id
JOIN msdb.dbo.sysjobs j
ON ja.job_id = j.job_id
JOIN msdb.dbo.sysjobsteps js
ON ja.job_id = js.job_id
AND ISNULL(ja.last_executed_step_id,0)+1 = js.step_id
WHERE ja.session_id = (SELECT TOP 1 session_id FROM msdb.dbo.syssessions ORDER BY agent_start_date DESC)
AND start_execution_date is not null
AND stop_execution_date is null;
That should help you sort out your problem, if not, post some more details about what exactly the job is doing.
Code to check SQL server agent is running (run from Management studio).
DECLARE @agent NVARCHAR(512);
SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')),
EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;
You can manage Agent from SQL Server Configuration Manager.